Получить максимальное число, хранящееся в списке

пример №1

numbers = ['1086', '1123', '543', '1180', '1222', '1300', '888']
print(max(numbers))

результат: 888, желаемый результат: 1300

пример №2

numbers = ['1086', '1123', '1180', '1222', '1300']
print(max(numbers))

результат: 1300, желаемый результат: 1300

цель

numbers = ['1086', '1123', '543', '1180', '1222', '1300', '888']
print(max(numbers))

результат: 1300, желаемый результат: 1300

должны быть задействованы все 3-х и 4-х значные комбинации

первые 10 результатов из индекса Google, которые предлагают «enumarate», «max()», «sort()», [-1], [0], а также различные варианты «for» и т. д.. заставил меня написать этот вопрос. в лучшем случае мозг мертв копировать / вставлять.


numbers = ['888','999','543']
print(max(numbers))

вывод является максимальным значением, если все 3 элемента в списке имеют длину 3 цифры, но с 4 цифрами он действует следующим образом.

что это?

numbers = ['888','999','543','1000','999.9']
print(max(numbers))
if float(max(numbers)) < 1000:
    print("hello?")

Функция max() должна быть исправлена.

У вас в списке строки, а не числа. print(max(int(n) for n in numbers)) должен решить эту проблему.

Grisha 17.02.2023 15:25

он считает его целым числом до тех пор, пока оно не станет 3-значным, а 4-значное число просто уклоняется.

kvhrs 18.02.2023 09:17
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
2
69
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Замените print(max(numbers)) на print(max(map(int, numbers)))

Ответ принят как подходящий

Ваш список содержит строку, а не целые числа, вы используете map() для преобразования строки в целые числа:

numbers = ['1086', '1123', '543', '1180', '1222', '1300', '888']
print(max(map(int, numbers)))
>>> 1300

мы получили победителя, после всех манипуляций, <class 'int'> на выходе. и более лаконичный код.

kvhrs 17.02.2023 15:36

Функция max() должна быть исправлена.

kvhrs 18.02.2023 09:15

@kvhrs: max() в порядке, он делает то, что должен делать, но в зависимости от типов попробуйте: max(['a', 'z', 'b']) и max([1,5,2])

Maurice Meyer 18.02.2023 21:22

нет, это не так, print(max(['1','5','2'])) он пропускает 4-значные значения без всякой причины, эта функция может быть названа частично реализованной логикой плохими разработчиками, которые являются частью команды разработчиков python и не уважайте время людей. и прежде чем ответить, вы должны протестировать различные варианты того, что происходит, чем указать, что это нормально, это ненормально и это не «питоновский способ» в каком-либо смысле.

kvhrs 18.02.2023 21:28

Вы можете попытаться преобразовать свою строку в целое число следующим образом:

numbers = ['1086', '1123', '543', '1180', '1222', '1300', '888']
print(str(max(map(int, numbers)))

Я преобразовал результат в строку, чтобы он имел тот же тип, что и исходный список.

Другим решением было бы использовать ключевой параметр для max:

numbers = ['1086', '1123', '543', '1180', '1222', '1300', '888']
print(max(numbers, key=int))

Выход:

1300

Генератор одной строки с max() и int()

max(int(x) for x in numbers)

Или

max(numbers,key=int)

Другие вопросы по теме