

pythonについての質問です．  
初心者ですので，よろしくお願いします．

コード上で，下記のような記載があります．  
意味が理解できないのですが，お教えいただけませんか？  
最後の「A,B=B,A」部分が理解できていません．  
イコールの両側にふたつずつ変数があるこの行はどういう意味なのでしょうか？

よろしくお願いします．

* * *
[code]

    X=40
    Y=30
    A = zeros((X,Y),"float64")
    B = zeros((X,Y),"float64")
    
    A,B=B,A
    
[/code]

* * *


CC BY-SA 4.0
2018-09-19T10:07:42.710
48551
2018-09-19T10:38:27.153
2018-09-19T10:38:27.153
19110
30172
question
python python3
Python の A, B = B, A とはなに？


`A, B = B, A` は、2 つの変数 `A`, `B` の内容を入れ替えています。多重代入などと呼ばれており、「`B` の値を `A`
に代入」と「`A` の値を `B` に代入」を同時に行っていると解釈できます。この代入の前後で `A`, `B` の内容を `print`
すると分かりやすいです。

Python 以外の言語だと、2 つの変数の入れ替え操作 (いわゆる swap 操作) は以下のように 3
つ目の一時的な変数を用意して行うのが一般的なことがあります。

[code]

    tmp = B
    B = A
    A = tmp
    
[/code]

Python ではこれと同様のことを 1 行で書けます。

[code]

    A, B = B, A
    
[/code]

より正確には、この代入はタプルへのパックとシーケンスのアンパックで実現されています。つまり、右辺がタプル `(B, A)`
として解釈されたあと、そのアンパック操作が行われることで多重代入になっています。

  * 参考 
    * [5.3. タプルとシーケンス](https://docs.python.org/ja/3/tutorial/datastructures.html#tuples-and-sequences) -- Python 3 ドキュメント
    * [Pythonでタプルやリストをアンパック（複数の変数に展開して代入）](https://note.nkmk.me/python-tuple-list-unpack/) -- note.nkmk.me


CC BY-SA 4.0
2018-09-19T10:11:57.047
48552
2018-09-19T10:23:49.803
2018-09-19T10:23:49.803
19110
19110
48551
answer