2012-04-05 26 views
1

我剛剛開始學習Python,並在解釋器中與in運算符一起玩,並發現了一些有趣的東西。這是爲什麼False如果元組被描述爲序列類型,爲什麼長度爲1的元組被視爲標量?

# case 1 
>>> [1] in [1,2,3] 
False 

但這些都是True

# case 2 
>>> [1] in [[1],2,3] 
True 

# case 3 
>>> (1) in [(1),2,3] 
True 

# case 4 
>>> (1) in [1,2,3] 
True 

# case 5 
>>> 1 in [(1),2,3] 
True 

我可以理解爲什麼#1 False,因爲[1]是一個列表對象,並沒有在列表中出現[1,2,3]。我也得到爲什麼#2是True。但是,如果元組是不可變的列表(如Norm Matloff在他的tutorial中描述的那樣)或者是不可變的序列(如TUPLES的Python文檔所述),爲什麼(1)等於1而不是[1]

回答

7

括號不會形成一個元組,逗號。

>>> (1) 
1 
>>> (1,) 
(1,) 

那麼,你做(1),它實際上只是意味着1

>>> (1,) in [1,2,3] 
False 
+0

好吧,這是非常有意義的,謝謝。 – scorpiodawg 2012-04-06 04:33:02

相關問題