Пример №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() должна быть исправлена.
Он считает его целым числом до тех пор, пока оно не станет 3-значным, а 4-значное число просто уклоняется.
Замените 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'> на выходе. и более лаконичный код.
Функция max() должна быть исправлена.
@kvhrs: max() в порядке, он делает то, что должен делать, но в зависимости от типов попробуйте: max(['a', 'z', 'b']) и max([1,5,2])
Нет, это не так, print(max(['1','5','2'])) он пропускает 4-значные значения без всякой причины, эта функция может быть названа частично реализованной логикой плохими разработчиками, которые являются частью команды разработчиков python и не уважайте время людей. и прежде чем ответить, вы должны протестировать различные варианты того, что происходит, чем указать, что это нормально, это ненормально и это не «питоновский способ» в каком-либо смысле.
Вы можете попытаться преобразовать свою строку в целое число следующим образом:
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)
У вас в списке строки, а не числа. print(max(int(n) for n in numbers)) должен решить эту проблему.