37170


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

[code]

    for ax, img in zip(axes.ravel(), digits.images):
        ax.imshow(img)
    
[/code]


CC BY-SA 3.0
2017-08-13T22:13:03.843
37169
2017-08-16T04:32:32.030
2017-08-16T04:32:32.030
3054
23690
question
python
in の前に複数の変数がある for 文の意味


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

[code]

    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
    
[/code]


CC BY-SA 3.0
2017-08-14T00:06:01.680
37170
2017-08-14T00:06:01.680
9820
37169
answer


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

[公式ドキュメント](https://docs.python.jp/3/tutorial/datastructures.html#tuples-and-
sequences)では

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

と説明されています。

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

[code]

    In [1]: x,y = (6,7)
    
    In [2]: x*y
    Out[2]: 42
    
[/code]


CC BY-SA 3.0
2017-08-14T00:17:13.430
37171
2017-08-14T00:27:11.660
2017-08-14T00:27:11.660
13199
13199
37169
answer