Python
 Computer >> コンピューター >  >> プログラミング >> Python

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) のように記述すると、各要素が対応する変数に順に代入される。

これらの機能を使いこなすと、変数の初期化や値の入れ替え(スワップ)などを簡潔に記述でき、コードの可読性も向上します。ぜひ日常のコーディングに活用してみてください。

  1. Pythonの辞書(dict)を値で並べ替える方法

    Pythonの辞書を値でソートする基本 Pythonの標準ライブラリには、高性能なコンテナデータ型を提供する collections モジュールが含まれています。その中の OrderedDict は辞書のサブクラスで、要素が追加された順序を記憶できるのが特徴です。順序付き辞書を反復処理すると、キーが最初に追加された順番どおりに項目が返されます。 >>> from collections import OrderedDict >>> D = {5:fff, 3:ttt, 1:ooo, 4:bbb, 2:ddd} >>> OrderedDict

  2. Python関数の引数渡しの仕組みを解説!値渡しに見える理由とは

    Pythonでは、関数に引数を渡すとき、その動作が「値渡し(pass by value)」なのか「参照渡し(pass by reference)」なのか迷うことがあります。結論から言うと、Pythonの引数渡しは「オブジェクトへの参照渡し(pass by object reference)」です。ただし、オブジェクトの種類によって挙動が異なるため、「値渡しのように見える」ケースがあります。 サンプルコードの出力結果 b = 30 a = [10] この出力を見ると、変数aの値は関数呼び出し後も変わっていないように見えます。そのため「Pythonの引数は値渡しだ」と結論づけたくなりますが、実