変数を入れ替える
Pythonには、変数の値を入れ替える(swapする)ための非常にシンプルで強力な仕組みがあります。 他の多くの言語では「一時変数」を使う必要がありますが、Pythonでは 1行で安全に入れ替えが可能 です。 初心者が最初に「Pythonって便利だ!」と感じるポイントのひとつでもあります。
ここでは、変数の入れ替えをステップバイステップで理解し、例題・テンプレートを交えて丁寧に解説します。
Pythonで変数を入れ替える基本
Pythonでは、次のように書くだけで変数の値を入れ替えられます。
a, b = b, a
Pythonなぜこれで入れ替えられるのか
Pythonは右側の b, a を タプルとして一度に評価し、左側に順番に代入する という仕組みを持っています。
つまり内部的には次のように動いています:
- 右側の値をまとめて評価 →
(b, a) - 左側の変数に順番に代入 →
a = b,b = a
この「同時代入(multiple assignment)」がPythonの強力な特徴です。
ステップバイステップで理解する
ステップ1:普通の代入
a = 10
b = 20
Pythonステップ2:入れ替え
a, b = b, a
Pythonステップ3:結果を確認
print(a) # 20
print(b) # 10
Python他の言語との比較(Pythonの強みを理解する)
一般的な言語(例:C、Java)
temp = a;
a = b;
b = temp;
CPython
a, b = b, a
PythonPythonは 一時変数が不要 で、コードが短く、ミスが起きにくいです。
実務でよく使う変数入れ替えのパターン
① 並び替え処理で使う
x, y = 5, 3
if x < y:
x, y = y, x
Python② ループで前後の値を入れ替える
prev, curr = curr, prev
Python③ ソートアルゴリズムの実装
if nums[i] > nums[j]:
nums[i], nums[j] = nums[j], nums[i]
Python④ 関数の戻り値を入れ替える
def swap(a, b):
return b, a
x, y = swap(10, 20)
Python初心者がつまずくポイント(深掘り)
① 変数の数が合わない
a, b = 10 # ❌ エラー
Python② 右側がイテラブルでない
a, b = 100 # ❌ int は分解できない
Python③ 入れ替えの順番を間違える
a, b = a, b # ❌ 入れ替わらない
Python応用:複数の変数を一度に入れ替える
Pythonでは、3つ以上の変数も入れ替えられます。
a, b, c = c, a, b
Pythonまた、アスタリスクを使ったアンパックも可能です。
first, *middle, last = [1, 2, 3, 4, 5]
last, first = first, last
Python変数入れ替えテンプレート(そのまま使える)
基本テンプレート
a, b = b, a
Python条件付き入れ替えテンプレート
if a < b:
a, b = b, a
Pythonリスト内の入れ替えテンプレート
nums[i], nums[j] = nums[j], nums[i]
Python関数テンプレート
def swap(x, y):
return y, x
Pythonセキュリティ視点でのメリット
変数の入れ替えは一見単純ですが、セキュリティ面でもメリットがあります。
① 一時変数を使わないため、誤代入のリスクが減る
a, b = b, a
Python一時変数を使うと、誤って値を上書きする可能性があります。
② 可読性が高く、意図が明確
可読性が高いコードは、セキュリティチェックの漏れを防ぎます。
③ バグが減る
入れ替え処理はバグの温床になりやすいですが、Pythonの同時代入は安全です。
まとめ
- Pythonでは
a, b = b, aで変数を入れ替えられる - 一時変数が不要で、コードが短く安全
- タプルの同時代入が仕組みの中心
- ソート、ループ、初期化など実務で頻繁に使う
- セキュリティ面でもメリットがある
初心者のうちは、まず 「入れ替えは1行で書ける」 というPythonの強みをしっかり理解しておくと、コードが一気に洗練されます。
