我的网站服务器脚本中有一小段python代码,看起来有点像这样:
console.append([str(x) for x in data])
console.append(str(max(data)))
很简单,你可能会认为,但是它输出的结果是:
['3', '12', '3']
3
由于某种原因,python认为3是[3,12,3]的最大值!
我做错了什么?或者这是python方面的错误行为?
答案 0 :(得分:8)
因为ASCII表中的字符'3'
高于'1'
。您正在比较字符串,而不是数字。如果要以数字方式进行比较,则需要将它们转换为数字。一种方法是max(data, key=int)
,但您可能希望在列表中实际存储数字。
答案 1 :(得分:1)
我对Python知之甚少,但你占用了最多的字符串,这意味着'3..'
大于'1..'
。