Страницы

Поиск по вопросам

воскресенье, 5 января 2020 г.

Как сделать чтобы max() возвращал самое большое число, а не самое большое первое число (букву)

#python


numbers = ("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6")
print(numbers)
a = numbers.split()
print(a)
print (max(a))
print (min (int(a)))


Выведет: 


  6 и -214 


А должен вывести: 


  542

    


Ответы

Ответ 1



При работе со строками используется лексикографическое сравнение: In [19]: "9" > "1000" Out[19]: True поэтому сначала преобразуйте элементы в числа - для этого можно воспользоваться функцией map(int, iterable) ("функциональный стиль"): max_ = max(map(int, a)) или генератором: max_ = max(int(x) for x in a) @hoefling посоветовал лучший вариант если в качестве результата нужна строка "542", а не число: In [2]: max(a, key=int) Out[2]: '542'

Комментариев нет:

Отправить комментарий