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

Пример №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 Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
Учебник по веб-скрапингу
Учебник по веб-скрапингу
Привет, ребята... В этот раз мы поговорим о веб-скрейпинге. Целью этого обсуждения будет узнать и понять, что такое веб-скрейпинг, а также узнать, как...
Тонкая настройка GPT-3 с помощью Anaconda
Тонкая настройка GPT-3 с помощью Anaconda
Зарегистрируйте аккаунт Open ai, а затем получите ключ API ниже.
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)

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