2012-04-05 2 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]がリストオブジェクトであり、それはリスト[1,2,3]では発生しないので、#1は、Falseである理由私は理解することができます。私はまた#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

関連する問題