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になります。
この記事は以上です。