7
x,y,z = [1,2,3], [4,5,6], [7,8,9]
for a,b,c in x,y,z:
    print(a,b,c)

出力は次のとおりです。

1 2 3
4 5 6
7 8 9

この出力を生成するためにここで行われているロジックを頭の中でナビゲートすることはできません。このコードを明確に意図したとおりに動作させる zip 関数を認識しています。しかし、zip関数を使用しない場合に、なぜこのように機能するのかを理解しようとしています.

これは、このように複数のリストを連続して反復できる意図的な機能ですか? 一種の?

4

7 に答える 7

6

ああ、これはめちゃくちゃです。これは単純に、python の反復可能な unpackingを使いすぎています。このステートメントa, b, c = iterableは、 の要素をiterable変数ab、およびに代入するだけcです。この場合iterable、3 つの要素が必要です。

まず、次のものがあります。

x,y,z = [1,2,3], [4,5,6], [7,8,9]
# Which is:
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]

次に、次のようになります。

for a, b, c in x, y, z:
    print(a, b, c)
# Which is:
temp = (x, y, z)
for item in temp:
    a = item[0]
    b = item[1]
    c = item[2]
    print(a, b, c)

もう 1 つ注意すべき点は、ステートメントmytuple = 1, 2, 3が と同じであるということmytuple = (1, 2, 3)です。

于 2013-10-16T04:42:51.233 に答える