为什么我的代码找不到数字串中的最大数字(空格分隔)

时间:2018-05-17 14:36:05

标签: python python-3.x python-2.7

我把这个字符串给了我想要找到最大值的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 :(得分:2)

您还可以通过传递key

找到最大字符串,就像解释为整数一样
max(a.split(), key=int)

'542'

然后让它成为一个int

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

542

答案 1 :(得分:1)

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

这会将a转换为整数列表并找到正确的最大值。字符串通过char比较char,比较charcodes。

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

以上工作也可以在不创建列表的情况下作为生成器变体。

答案 2 :(得分:0)

max(map(int, a.split(" ")))
# 542