基于最小函数的比较

7 投票
2 回答
726 浏览
提问于 2025-04-17 23:36

在Python中,min函数是怎么对列表进行工作的呢?

比如说,

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

 min(num,num2) 

这个代码的结果是num2。那么,它的比较是根据值来进行的,还是根据长度来进行的呢?

2 个回答

1

在Python中,当你比较不兼容的数据类型时,它会比较这些数据类型的“首字母”。比如:

>>> {}<[]
True
'dict'<'list'

这里'd'<'l',所以返回True。这个逻辑在所有比较操作中都是一样的,比如<、>、=、min()、max()等等。

希望上面的例子现在能让你明白了。

6

首先,当用 min 比较两个列表时,元素是按顺序比较的。也就是说,它会先比较第一个元素 11,然后比较第二个元素 22,依此类推,最后比较 5[1,2,3]

其次,在 Python 2 中,不同类型的值是可以进行比较的,虽然这种比较的结果是“随意的,但一致的”。根据文档的说法:

运算符 <, >, ==, >=, <= 和 != 会比较两个对象的值。这两个对象不需要是同一种类型。如果它们都是数字,会被转换成一种共同的类型。否则,不同类型的对象总是被认为不相等,并且会有一致但随意的排序。

...

(这种不寻常的比较定义是为了简化排序和 in、not in 等操作的定义。将来,不同类型对象的比较规则可能会改变。)

至少在 cPython 中,这种比较相当于比较它们各自类型的字符串。因此:

5 < [1,2,3]
Out[8]: True

因为 'int' < 'list'。我认为这是一个实现细节,这种排序的随意性应该被强调。

幸运的是,在 Python 3 中,这种奇怪的情况被替换成了 TypeError

撰写回答