为何Python代码无法从空格分隔的数字字符串中找到最大值?
为什么取最大值返回的是"6"而不是"542"?
嘿,这是个新手很容易踩的典型坑——你在对字符串列表做最大值比较,而不是数值列表!
咱们拆解下你最初的代码:
a = ("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6") a = a.split(" ") max(a) # 返回"6"
执行split(" ")后,a变成了一个由字符串元素组成的列表:["4", "5", "29", "54", "4", "0", "-214", "542", "-64", "1", "-3", "6", "-6"]
Python里字符串的比较逻辑是按字符的ASCII码逐位对比:
- 当对比"6"和"542"时,会先看第一个字符:"6"的ASCII值(54)比"5"的ASCII值(53)大,所以直接判定"6" > "542",这就是为什么
max()返回了"6"。
而你后来的正确代码完美解决了这个问题:
a = a.split(" ") a = [int(i) for i in a] str(max(a)) # 返回"542"
这里通过列表推导式把每个字符串元素转换成了整数类型,此时a变成了数值列表,max()就会按照数值大小来比较,自然能得到真正的最大值542。
总结来说,你的核心错误是:没有将分割后的字符串转换为整数,导致比较逻辑从数值大小判断变成了字符串字典序判断。
内容的提问来源于stack exchange,提问作者Satya Prakash Dash
相关产品推荐
相关产品推荐

