2017-02-16 4 views
2

私は最近、偶然、この動作をPythonで見てきました。誰かが同じ結果でコンマで区切られたリスト結果と同様にlist of listsをループする理由を説明できますか?リストとカンマで区切られたリストのリストのPythonループの結果が同じ

# comma separated lists 
values = ['cat','fish'], ['cat','fish','monkey'], ['cat','fish','monkey','fish'] 
for v in values: 
    print(v) 

# List of lists 
values = [['cat','fish'], ['cat','fish','monkey'], ['cat','fish','monkey','fish']] 
for v in values: 
    print(v) 
+5

の値は最初のケースでは 'タプル 'とみなされ、リストのリストをループするのと同じ方法でリストのタプルをループできます。 'print(type(values)')と表示されます。 –

+0

それぞれ 'print(values)'があります。最初のものはタプルを作成します。 – asongtoruin

答えて

9

値をカンマで区切った場合、Python はこれをタプルと解釈します。あなたの最初のステートメントは同等ですので:リストのように

values = (['cat','fish'], ['cat','fish','monkey'], ['cat','fish','monkey','fish']) 

、タプルは(再び['cat','fish']ある、など)その要素の上に反復可能である

のでforループでvため、何も変更。

あなたはが最初values要素を追加/削除することはできません、またあなたvalues要素を設定することができます(あなたはしかし、個々のリストの呼び出しを実行することができますので、唯一の違いは、タプルが不変であるということです)。

+1

ありがとう、ウィリアム・ヴァン・オンセム! –

5

カンマで区切られたリストは、実際にはタプルです:

>>> values = ['cat','fish'], ['cat','fish','monkey'], ['cat','fish','monkey','fish'] 
>>> values 
(['cat', 'fish'], ['cat', 'fish', 'monkey'], ['cat', 'fish', 'monkey', 'fish']) 
>>> type(values) 
<type 'tuple'> 

タプルが反復可能なので、あなたが同じ結果を得ます。

+0

ありがとう@fredtantini –

4

あなたはタプルを構築しているコマスでリストを分離する場合、基本的に、ウィッヒは反復することができます:タプル2つ目として扱わ

values = ['cat','fish'], ['cat','fish','monkey'], ['cat','fish','monkey','fish'] 
values 
(['cat','fish'], ['cat','fish','monkey'], ['cat','fish','monkey','fish']) 
+0

ダニエル・サンチェスありがとう! –

0

最初のものはリストです。どちらもforループでiterableです。

関連する問題