基于min函数的比较

sur*_*rya 7 python python-2.7

min函数究竟是如何为python中的列表工作的?

例如,

 num = [1,2,3,4,[1,2,3]]
 num2 = [1,2,3,4,5]

 min(num,num2) 
Run Code Online (Sandbox Code Playgroud)

给出num2了结果.比较值是基于还是基于长度?

roi*_*ppi 6

首先 - 在比较两个列表时min,按顺序比较元素.所以它是比较11,22......并5[1,2,3].

其次,在python 2中,允许比较不等类型,并给出"任意但一致"的排序.说文档:

运算符<,>,==,> =,<=和!=比较两个对象的值.对象不必具有相同的类型.如果两者都是数字,则将它们转换为通用类型.否则,不同类型的对象总是比较不相等,并且一致但是任意地排序.

...

(这种不寻常的比较定义用于简化操作的定义,如排序和运算符中的in和not.将来,不同类型的对象的比较规则可能会发生变化.)

至少在cPython中,这种比较等同于比较代表各自类型的字符串.因此:

5 < [1,2,3]
Out[8]: True
Run Code Online (Sandbox Code Playgroud)

因为'int' < 'list'.我相信这是一个实现细节,应该强调这种顺序的任意性.

谢天谢地,在python 3中,这个愚蠢被替换为TypeError.