一括代入をタプルを使って説明

Python
スポンサーリンク

Python学習中の者です。学習したことを書いていきます。

スポンサーリンク

x,y = y+1 ,x+4 はどうなるか?

x = 5 y= 7 のときに
x,y = y+1 ,x+4 … ① 

を実行するとx,yはそれぞれいくつになるでしょうか?結論から言うとx = 8 , y = 9 になります。

①で左辺の第1項へ右辺の第1項を代入するとすると x = y+1 でxは8になります。
次に第2項について同様に考えると y = x + 4 で 今xは8なので yは12?

Pythonではそのようにしないようです。

この記事では①が何で x = 8 , y = 9 になるのかついて説明しています。

スポンサーリンク

x,y = 1,3 について考える

まず、x,y = 1,3 という文について考えてみます。この文を上でやったように考えると
左辺、右辺それぞれの第1項同士、第二項同士の代入となり
x = 1 y = 3 となります。問題なさそうです。この場合はこれでよさそうですが上でやったようにPythonではこのように考えません。

右辺の 1,3について詳しく見ていきます。右辺を変数aに代入し、aを表示すると
a = 1,3
print(a)

実行結果はこのようになります。(1, 3)

1,3 はタプルとして扱われています。右辺に1,3のような値の組を書くとPythonはタプルとみなすようです。

では x,y = 1,3 に戻ります。 今見たように1,3はタプルです。なので
x,y = 1,3 は x,y = (1,3) … ②と書いても同じ意味です。

左辺のx,yはタプルではなく2つの変数を,(コンマ)で区切って並べて書いたものです。

②はタプルの要素を1つずつにして左辺の変数に左から順番に取り出しています。これをタプルのアンパックと言ったりします。

そうすると x = 1 , y = 3 と なります。

今説明したタプルのパック、アンパックという考え方で①を見ていきます。

スポンサーリンク

タプルのパック、アンパックで考えてみる

x = 5
y= 7 のとき
x,y = y+1 ,x+4  … ① 

①の右辺はタプルなのでパックされていて  x,y = (y+1 ,x+4) … ③とみなされる。

ここで
x = 5 y= 7 なので ③は x,y = (8,9)  … ④となる。

④はタプルのアンパックをしているので xとyは 8と9になります。

この記事は以上です。

https://amzn.to/381XvXL
https://amzn.to/3r7PBDR