[Python] 要素のスワップについてのメモ
はじめに
プログラミングの勉強としてアルゴリズム関連の本を読んでいるのですが、バブルソートか何かの話で2つの要素をスワップする際のコードを見て「そんなことできるんだ」と思ったので、関連知識も含めてのメモです。
どういうことかというと
>>> l=[1, 0]
>>> print(l)
[1, 0]
最も単純化し、こんな配列を考えてみます。この二つの要素をスワップしたいとします。
誠実な方法としては、以下のような書き方が考えられます。
>>> l[0] = temp0
>>> l[1] = temp1
>>> l[0] = temp1
>>> l[1] = temp0
>>> print(l)
[0, 1]
エレガントではないですね。
そんなとき、Pythonなら以下のように書けるということです。
>>> l[0], l[1] = l[1], l[0]
>>> print(l)
[0, 1]
#もしくは、2変数なら
>>> a, b = 1, 0
>>> a, b = b, a
>>>print(a, b)
0, 1
どういう仕組みになっているのでしょうか。
参考になりそうな記事を見つけたので紹介させていただきます。(https://www.haya-programming.com/entry/2018/09/19/195828)
3つまではスタックを用いた高速な処理を行うよう最適化されている。
4つ以上ある場合は(たぶん最適化を実装するのが面倒くさいので)tupleにしてシーケンスアンパックで処理する。
ちゃんと想定された動作のようなので、エレガントな記述を気兼ねなく使えます。
もちろん、以下のように書くと見た目通りの処理が行われるので、注意が必要です。
>>> l[0] = l[1]
>>> l[1] = l[0]
>>> print(l)
[0, 0]
Author And Source
この問題について([Python] 要素のスワップについてのメモ), 我々は、より多くの情報をここで見つけました https://qiita.com/zhengxi__/items/ced17fbb41bfd6759cae著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .