Почему мой код не может найти максимальное число в строке чисел (через пробел) - PullRequest
0 голосов
/ 17 мая 2018

Я дал эту строку своему коду Python, из которого я хотел найти максимум.

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

Может кто-нибудь объяснить, почему он не возвращает 542? Наконец-то я нашел правильный код:

>>> a = a.split(" ");
>>> a = [int(i) for i in a];
>>> return str(max(a))

Но может ли кто-нибудь сказать мне мою глупость в прежнем коде.

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Вы также можете найти максимальную строку, как если бы она интерпретировалась как целое число, передав key

max(a.split(), key=int)

'542'

И сделайте потом int

int(max(a.split(), key=int))

542
0 голосов
/ 18 мая 2018
max(map(int, a.split(" ")))
# 542
0 голосов
/ 17 мая 2018
max([int(x) for x in a.split()])

Это преобразует a в список целых и найдет правильный максимум.Строки сравниваются char за char, сравнивая charcodes.

max(int(x) for x in a.split())

Вышеприведенное тоже работает, без создания списка, как вариант генератора.

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