フィボナッチ数列でPythonのスワップについて試す

lecture

100以下のフィボナッチ数列を作るPythonのコードは次のようにします。

a, b = 0, 1
while a < 100:
    print(a, end=', ')
    a, b = b, a + b

結果
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,

プログラミングの学習でフィボナッチ数列がよく出てくるのは数学的な意味合いというよりも、スワッピングの例としてちょうど良いからだと思います。

さて、本来変数aとbの値を入れ替えるには次のようにしなければなりません。

a = 1
b = 2
temp = a
a = b
b = temp
print(a, b)

けれども、アンパックを使うことで見事にスワッピングを実現しています。
これはどんな仕掛けでしょうか。

それは、スワップ動作は、代入演算子の右側のb,aが評価され、値が一時的な無名タプルに格納されることで実現されています。
アンパックを使った複数代入をもう一度見直して見ると良いでしょう。

この記事はEffective Pythonを参考にしています。
入門編を終えたら役に立ちます。

タイトルとURLをコピーしました