2014-08-27 35 views
1

我不知道在哪裏可以找到參考解釋如下如何理解`3 <範圍(3)`在python

>>> 3<range(3) 
True 
>>> [1,2]<range(3) 
False 
>>> [1]<range(3) 
False 
>>> [4]<range(3) 
False 
>>> [4,1,2,3]<range(3) 
False 

謝謝!

+0

@MartijnPieters,是否每個元素都不在相應的索引處進行評估? – 2014-08-27 17:30:17

+0

@PadraicCunningham:'range()'產生一個從'0'開始的列表。 – 2014-08-27 17:30:46

+1

@PadraicCunningham:對於列表是的,但是當類型不同時,它們按類型名稱排序 – 2014-08-27 17:31:00

回答

3

在Python 2中,range()產生一個列表對象。第一測試比較了兩種不同類型的,在該點numbers always come before other types

>>> range(3) 
[0, 1, 2] 
>>> 3 < [] 
True 

其餘部分只是比較列表針對[0, 1, 2];列表按字典順序進行比較,並且0低於所有其他測試中的任何第一個值。

你的初始值應該是低於0:

>>> [-1] < range(3) 
True 

,或者,如果它是相等的,將下一個值應該低於1:

>>> [0, 0] < range(3) 
True 

見表達文件的Comparisons section

使用對應元素的比較按字母順序比較元組和列表。這意味着爲了比較相等,每個元素必須相等並且兩個序列必須是相同類型並且具有相同長度。