in の前に複数の変数がある for 文の意味 – python

質問:


下記のようなinの前にふたつ関数?があるようなfor文はどういう意味でしょうか?

for ax, img in zip(axes.ravel(), digits.images):
    ax.imshow(img)

質問者: user23690

payaneco

zip関数は2つの配列を同時にインクリメントしながら変数を返す関数です。
ここではfor文を最初に通るとき、ax = axes.ravel()[0]img = digits.images[0]を格納し、次に通るときax = axes.ravel()[1]img = digits.images[1]を格納するという意味を持ちます。
参考記事

ax = [1, 2, 3]
ay = ['a', 'b', 'c', 'd']
for (x, y) in zip(ax, ay):
  print(x, y)
#出力結果
#1 a
#2 b
#3 c

2つ組の第1要素をaxに、第2要素をimgに代入するという意味です。(zip(axes.ravel(), digits.images)が2つ組のイテレータとなっています。)aximgに当たるものは関数とは限らないです。

公式ドキュメントでは

この操作は、シーケンスのアンパック (sequence unpacking) とでも呼ぶべきもので、

と説明されています。

またforに限らず、代入の左辺でも同じ書き方が出来ます。

In [1]: x,y = (6,7)

In [2]: x*y
Out[2]: 42

出典

You Might Also Like

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です