疯狂的python行为

Mar*_*tin 0 python max

我在我的网站的服务器脚本中有一小段python代码,看起来有点像这样:

console.append([str(x) for x in data])
console.append(str(max(data)))
Run Code Online (Sandbox Code Playgroud)

很简单,你可能会认为,但它输出的结果是这样的:

['3', '12', '3']
3
Run Code Online (Sandbox Code Playgroud)

由于某种原因,python认为3是[3,12,3]的最大值!

我做错了什么?或者这是python方面的不当行为?

Luk*_*ský 8

因为'3'ASCII表中的字符比'1'.您正在比较字符串,而不是数字.如果要以数字方式进行比较,则需要将它们转换为数字.一种方法是max(data, key=int),但您可能希望在列表中实际存储数字.

  • 如果使用`str(x)`:)将它们显式转换为字符串,则它不能是整数列表 (4认同)