Pythonで複数の変数に同時に値を代入する方法を徹底解説
Pythonにおいて、変数とはメモリ上に格納されたオブジェクトに付けられた「ラベル(識別子)」のようなものです。そのため、同じオブジェクトを複数の変数から参照することができます。この仕組みを踏まえると、Pythonでは複数の変数への値の代入がとても柔軟に行えます。本記事では、代表的な2つの方法を解説します。
1. 同じ値を複数の変数に一括代入する
イコール(=)をつなげて記述することで、同じ値を一度に複数の変数へ代入できます。
>>> a = b = c = 5
>>> a
5
>>> b
5
>>> c
5
この例では、a、b、c の3つの変数がすべて同じオブジェクト(整数 5)を参照しています。これは組み込み関数 id() を使うと確認できます。id() はオブジェクトの一意な識別情報(メモリ上のアドレスに相当する値)を返します。
>>> id(a), id(b), id(c)
(1902228672, 1902228672, 1902228672)
3つの変数の id() が同じ値を返していることから、すべてが同一のオブジェクトを指していることが分かります。
2. 異なる値を複数の変数に同時に代入する(アンパック)
Pythonでは、1つの代入文で異なる値を異なる変数に割り当てることも可能です。タプルなどのイテラブル(反復可能オブジェクト)の中身を展開して、それぞれの変数に代入することを「アンパック」と呼びます。
>>> a, b, c = (1, 2, 3)
>>> a
1
>>> b
2
>>> c
3
このように書くと、タプル (1, 2, 3) の各要素が左辺の a、b、c に順番に代入されます。括弧は省略できるため、a, b, c = 1, 2, 3 と書いても同じ結果になります。
補足:リストや文字列でもアンパックは使える
アンパックはタプルだけでなく、リストや文字列など任意のイテラブルに対して利用できます。
>>> x, y, z = [10, 20, 30]
>>> x
10
>>> s1, s2 = "AB"
>>> s1
'A'
また、要素数が多い場合はアスタリスク(*)を使うことで、残りの要素をまとめて受け取ることもできます。
>>> first, *rest = [1, 2, 3, 4]
>>> first
1
>>> rest
[2, 3, 4]
まとめ
Pythonで複数の変数に値を代入する主な方法は次の2つです。
- 連鎖代入: a = b = c = 5 のように記述すると、すべての変数が同じオブジェクトを参照する。
- タプルアンパック: a, b, c = (1, 2, 3) のように記述すると、各要素が対応する変数に順に代入される。
これらの機能を使いこなすと、変数の初期化や値の入れ替え(スワップ)などを簡潔に記述でき、コードの可読性も向上します。ぜひ日常のコーディングに活用してみてください。
-
Pythonの辞書(dict)を値で並べ替える方法
Pythonの辞書を値でソートする基本 Pythonの標準ライブラリには、高性能なコンテナデータ型を提供する collections モジュールが含まれています。その中の OrderedDict は辞書のサブクラスで、要素が追加された順序を記憶できるのが特徴です。順序付き辞書を反復処理すると、キーが最初に追加された順番どおりに項目が返されます。 >>> from collections import OrderedDict >>> D = {5:fff, 3:ttt, 1:ooo, 4:bbb, 2:ddd} >>> OrderedDict
-
Python関数の引数渡しの仕組みを解説!値渡しに見える理由とは
Pythonでは、関数に引数を渡すとき、その動作が「値渡し(pass by value)」なのか「参照渡し(pass by reference)」なのか迷うことがあります。結論から言うと、Pythonの引数渡しは「オブジェクトへの参照渡し(pass by object reference)」です。ただし、オブジェクトの種類によって挙動が異なるため、「値渡しのように見える」ケースがあります。 サンプルコードの出力結果 b = 30 a = [10] この出力を見ると、変数aの値は関数呼び出し後も変わっていないように見えます。そのため「Pythonの引数は値渡しだ」と結論づけたくなりますが、実