在包含字符串和整数的列表上使用max()

Man*_*edi 1 python list max python-2.7

当我尝试max()在包含整数和字符串组合的列表上调用函数时,它总是返回一个字符串,在Python 2.x中

例如,

#input
li = [2, 232322, 78, 'python', 77]
max(li)

#output
'python'
Run Code Online (Sandbox Code Playgroud)

这背后的逻辑似乎是什么?Python如何将字符串与整数进行比较?

Dae*_*yth 7

在python2中,字符串和数字以任意但一致的顺序进行比较.

请参阅比较

除了不同的数字类型和不同的字符串类型之外,不同类型的对象永远不会相等; 这些对象是一致但任意排序的(因此排序异构数组会产生一致的结果

在python3中,这会引发类型错误.

TypeError: unorderable types: str() > int()
Run Code Online (Sandbox Code Playgroud)