min函数究竟对python中的列表有效吗?
例如,
num = [1,2,3,4,[1,2,3]]
num2 = [1,2,3,4,5]
min(num,num2)
结果为num2
。比较值是基于还是基于长度?
答案 0 :(得分:6)
首先 - 将两个列表与min
进行比较时,会按顺序比较元素。因此,它将1
与1
,2
与2
...和5
与[1,2,3]
进行比较。
其次,在python 2中,允许比较不等类型,并给出“任意但一致”的排序。请docs:
运算符<,>,==,> =,< =和!=比较两个值 对象。对象不必具有相同的类型。如果两者都是数字, 它们被转换为普通类型。否则,对象不同 类型总是比较不相等,并且一致地排序但是 任意。
...
(这种不寻常的比较定义用于简化 操作的定义,如排序和运算符中的in和not。 将来,不同类型对象的比较规则是 可能会改变。)
至少在cPython中,这种比较等同于比较代表各自类型的字符串。因此:
5 < [1,2,3]
Out[8]: True
因为'int' < 'list'
。我相信这是一个实现细节,应该强调这种顺序的任意性。
谢天谢地,在python 3中,这个愚蠢被TypeError
替换。
答案 1 :(得分:1)
在python中比较不兼容的数据类型时,它会比较数据类型的“第一个字母”。对于Ex:
>>> {}<[]
True
'dict'<'list'
这里'd'&lt;'l',因此返回True。在比较的所有地方都实现相同的逻辑,例如&lt;,&gt;,=,min(),max()......
我希望上面的例子现在清楚了。