疯狂的python行为

时间:2009-10-10 12:45:38

标签: python max

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

console.append([str(x) for x in data])
console.append(str(max(data)))

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

['3', '12', '3']
3

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

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

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:1)

我对Python知之甚少,但你占用了最多的字符串,这意味着'3..'大于'1..'