![](/img/trans.png)
[英]How to get the min/max in a list by using a lambda or function to get a comparison value from the item?
[英]Comparison on the basis of min function
min函數究竟是如何為python中的列表工作的?
例如,
num = [1,2,3,4,[1,2,3]]
num2 = [1,2,3,4,5]
min(num,num2)
給出num2
作為結果。 比較值是基於還是基於長度?
首先 - 將兩個列表與min
進行比較時,按順序比較元素。 因此,它是在比較1
與1
, 2
與2
...和5
與[1,2,3]
其次,在python 2中,允許比較不等類型,並給出“任意但一致”的排序。 說文檔 :
運算符<,>,==,> =,<=和!=比較兩個對象的值。 對象不必具有相同的類型。 如果兩者都是數字,則將它們轉換為通用類型。 否則,不同類型的對象總是比較不相等,並且一致但是任意地排序。
...
(這種不尋常的比較定義用於簡化操作的定義,如排序和運算符中的in和not。將來,不同類型的對象的比較規則可能會發生變化。)
至少在cPython中,這種比較等同於比較代表各自類型的字符串。 因此:
5 < [1,2,3]
Out[8]: True
因為'int' < 'list'
。 我相信這是一個實現細節,應該強調這種順序的任意性。
值得慶幸的是,在python 3中,這種愚蠢被TypeError
取代了。
當您在python中比較不兼容的數據類型時,它會比較數據類型的“第一個字母”。 對於Ex:
>>> {}<[]
True
'dict'<'list'
這里'd'<'l' ,因此返回True。 在所有比較的地方都實現相同的邏輯,比如<,>,=,min(),max()......
我希望上面的例子現在清楚了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.