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
了结果.比较值是基于还是基于长度?
首先 - 在比较两个列表时min
,按顺序比较元素.所以它是比较1
有1
,2
有2
......并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
.
归档时间: |
|
查看次数: |
212 次 |
最近记录: |