簡體   English   中英

基於min函數的比較

[英]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進行比較時,按順序比較元素。 因此,它是在比較1122 ...和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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM