2016-05-17 48 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越长。 –