2

私は数週間前にPythonの学習を始めました(プログラミングの予備知識はありません)。シーケンスのアンパックに関連する次の問題に進み、非常に混乱しました。

何らかの理由でこれを試すと:

for b, c in [1,2]:
    print b,c

エラー メッセージが表示されます。

TypeError: 'int' オブジェクトは反復可能ではありません

リストをタプル (1,2) に置き換えようとすると、同じことが起こります

しかし、リスト内のタプルだけで同じことを試すと:

for b, c in [(1,2)]:
    print b,c

それは動作します - 私は得る:

1 2

何故ですか?

ありがとうございました。

ところで私はPython 2.7を使用しています

4

2 に答える 2

6

ステートメントを実行するたびにin <iterable>、 iterable から 1 つのアイテムをフェッチし、必要に応じてそれをアンパックしますb, c。したがって、最初の例では、 which を割り当てるb, cこと1ができませんが、次の例では、b, c = (1, 2)which を正常に解凍して ab, c を返します。

たとえば、値を出力してみてください。

>>> for x in [1, 2]:
        print "X: ", x


X:  1
X:  2

>>> for x in [(1, 2)]:
        print "X: ", x


X:  (1, 2)

したがって、割り当てb, c = 1は可能ですが、割り当てはできませんb, c = (1, 2)

于 2013-05-22T09:02:36.500 に答える