2016-05-17 75 views
3

的__lt__說我有兩個列表,和我運行下面的命令什麼是真正在做的名單

>>> s = [1, 2, 3] 
>>> t = [1, 2, 4] 
>>> s > t 
False 
>>> s < t 
True 

但如果我運行下面的命令

>>> s = [1, 2, 3] 
>>> t = [1, 1, 4] 
>>> s > t 
True 
>>> s < t 
False 

不得不承認,我對PY3代碼庫不太熟悉。 __lt__, __le__, __gt__, __ge__, __ne__, __eq__方法究竟發生了什麼?

+0

感謝您的鏈接! – mortonjt

回答

1

它比較天真,即逐元素。 4> 3,但2> 1。

+0

你能詳細說一下嗎?這與第二個例子不一致。 – mortonjt

+0

@mortonjt:1 == 1,2> 1 –

+0

對,但3 <4? – mortonjt

6

比較結果爲lexicographical。如果你閱讀這個定義,你就會明白一切。

按順序對成對的元素進行迭代,第一個不相等的對確定排序的勝者。

+0

而且,如果所有可比元素相等,則iirc越長。 –