Найти - Пользователи
Полная версия: Max значение в двух Tuple
Начало » Python для новичков » Max значение в двух Tuple
1 2
isd2020
Добрый день,
Даны два Tuple
tuple1, tuple2 = (123, ‘xyz’, ‘zara’, ‘abc’), (456, 700, 200)

Нужно найти маскимальное значение.
Вопро можно ли в функции MAX игнорировать не int значения ? Или как то по другому их оттуда убрать…

tuple1, tuple2 = (123, “xyz”, “zara”, “abc”), (456, 700, 200)
tuple3=tuple1+tuple2
print(“full tuple”)
for i in tuple3:
print(i)
print(max(tuple3))

Система выдает:

tuple1, tuple2 = (123, “xyz”, “zara”, “abc”), (456, 700, 200)
tuple3=tuple1+tuple2
print(“full tuple”)
for i in tuple3:
print(i)
print(max(tuple3))
AD0DE412
 def only_int(var):
    tmp = []
    for i in var:
        if type(i) == type(int()):
            tmp.append(i)
    return tuple(tmp)
tuple1, tuple2 = (123, "xyz", "zara", "abc"), (456, 700, 200)
tuple3 = only_int(tuple1) + only_int(tuple2)
print(f"tuple3 = {tuple3}")
print("full tuple")
for i in tuple3:
    print(i)
    print(max(tuple3))
doza_and
AD0DE412 Ваш ответ слегка оффтопик, чем и сам я часто грешу.

ТС спрашивает:
isd2020
Вопро можно ли в функции MAX игнорировать не int значения ?
Формально надо было ответить просто

НЕТ

И сослаться на документацию, в которой игнорирование не предусмотрено.
https://docs.python.org/3/library/functions.html#max

Формально автор не просит показывать ему какое либо решение. Поэтому дальше идет мой оффтопик, появление которого можно объяснить тщеславием и некоторой многословностью предложенного выше решения. :)

Если использовать дополнительную информацию, например о положительности чисел, то можно переопределить ключи выбора максимума так что строки будут меньше любых чисел.
 >>> max(*("a","b",1),*(2,3,5),key =lambda x:x if type(x) is int else -1)
5

Заранее прошу простить за многословность и оффтопик в конце.

p.s.
Я просто пользуюсь последней возможностью поболтать, а то скоро нас всех совсем прикроют.
https://www.youtube.com/watch?v=osnSRsq63Pg

AD0DE412
del
FishHook
AD0DE412
AD0DE412
из которого (я испытываю на этот счет полную уверенность) ни кто не в состоянии извлечь для себя какой либо урок или пользу я нахожусь в полном недоумении
Пост может и выглядит несколько сумбурно, но мысль, как мне кажется, донесена вполне толково. Давайте я попробую сказать то же самое другими словами. Прикол в том, что ваш код решает не ту задачу, которую поставил перед собой и перед нами Топик Стартер. Вопрос не в том, хорошо написан ваш код или плохо (хотя на мой взгляд плохо, но речь не об этом). Был задан вопрос, как с помощью функции max получить максимальное значение коллекции неоднородных по типу элементов. Вы предлагаете сначала построить коллекцию однородных по типу элементов, а потом применить к ней функцию max. Но согласитесь, это не то, чего желал автор поста. Функция max находит максимальный элемент за один проход коллекции, то есть алгоритмическая сложность O(n). Ваше решение на ровном месте увеличивает как количество проходов, так и потребление памяти на создание временной коллекции. Я вполне понимаю, что судя по содержанию стартового поста автор вопроса не задается такими высокими материями, и ваше решение имеет право на жизнь. Но… doza_and вам (и как мне кажется вполне корректно) намекнул, что на заданный вопрос есть буквальное решение, удовлетворяющее как вопросы производительности, так и конкретную суть вопроса - можно ли применять max к неконсистентным коллекциям. Ответ был дан в посте doza_and - да можно, для этого надо применить функцию-предикат. На что вы тут обиделись, мне не понятно.
AD0DE412
да все понятно и ни каких обид (серьезно)
если это так выглядит со стороны
то … звеняйте эээ каюсь итд итп
ps ну и наверное del
py.user.next
isd2020
Вопро можно ли в функции MAX игнорировать не int значения ? Или как то по другому их оттуда убрать…
Сначала надо выбрать значения, а потом искать среди них максимум. Во-первых, код будет чище и понятнее, во-вторых, код будет быстрее. Если у тебя миллион строк там и десять чисел, то зачем перебирать этот миллион строк через предикат и сравнивать результат с чем-то, если эти строки вообще никакой роли не играют?

  
>>> import itertools
>>> 
>>> tuple1, tuple2 = (123, 'xyz', 'zara', 'abc'), (456, 700, 200)
>>> 
>>> tuples = (tuple1, tuple2)
>>> 
>>> numbers = filter(lambda i: type(i) is int, itertools.chain.from_iterable(tuples))
>>> 
>>> maxnum = max(numbers)
>>> maxnum
700
>>>
doza_and
Я думаю тут никто не обиделся все чуток повеселились. все совершенно без обид :)
xam1816
doza_and
Я просто пользуюсь последней возможностью поболтать, а то скоро нас всех совсем прикроют
кстати смотрел этот видос,интересно,если примут закон,как будут закрывать просветительский контенет,если перед каждым видео будет упоминание в связи с законом о том что данное видео не просветительское, а просто научная фантастика, хотити верьте,хотити нет
PEHDOM
xam1816
если перед каждым видео будет упоминание в связи с законом о том что данное видео не просветительское, а просто научная фантастика, хотити верьте,хотити нет
ровно так же, как если перед порнофильмом писать, что это вовсе не порнография, а пособие для уроков полового воспитания, или как там оно называется сейчас в школах.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB