📌

Pythonで値の交換を1行で書く

2021/05/02に公開

Pythonで2値の交換を1行で書く

[解決策]サンプルコード

タイトルの回答になりますが、2値の交換はこのようにやります。シンプルでいいですね。

a = 111
b = 222

a, b = b, a

こんな感じに一時変数を用意しなくてもいいのです。

# このように一時変数を用意しなくてもいい
a = 111
b = 222

tmp = a
a = b
b = tmp

解説

1行で何が起こっているか

このa, b = b, aでなにが起こっているか解説します。

  • 右辺が実はタプルとしてみなされている(基本的に,で区切られた値は包括して、タプルとしてみなされます)
  • あとは単純にタプルをアンパックしてそれぞれの変数に代入している
# a, b = b, a は実質このようなコードと同義
a, b = (b, a)

同じことをリストを使ってもできるけど...

このやり方なら結局タプルじゃなくてもできますが、「余計なカッコを何もつけない」=「タプルが必然的に使われる」ということですね

# ↓これでも2値の交換は実現できるが、カッコをつけなくても(タプルでも)できるので冗長になる
a, b = [b, a]

Discussion