1. はじめに
Pythonのアンパック代入とは、タプル・リスト・辞書などの複数の要素を、一度に複数の変数に代入できる便利な構文です。直感的で読みやすく、特に関数の戻り値やループ処理などで役立ちます。
本記事では、Python|アンパック代入でタプル・リスト・辞書の要素を複数の変数に一度に代入する方法を、初心者にもわかりやすく具体的なコード例を交えて解説します。
学習を通じて、実務で使えるPythonの書き方を身につけていきましょう。
2. Pythonにおけるアンパック代入の基本
2-1. タプルのアンパック代入
Pythonでは、タプルの各要素を変数に分けて一括で代入できます。
# タプルをアンパックして変数に代入
person = ("Alice", 25, "Tokyo")
name, age, city = person
print(name)
print(age)
print(city)
実行結果:
Alice
25
Tokyo
2-2. リストのアンパック代入
リストも同様にアンパック可能です。
# リストをアンパック
colors = ["red", "green", "blue"]
r, g, b = colors
print(r)
print(g)
print(b)
実行結果:
red
green
blue
2-3. 辞書のキーや値のアンパック
辞書はそのままではアンパックできませんが、items()
やkeys()
、values()
メソッドと組み合わせて使います。
# 辞書のアンパック(keyとvalueを取得)
user = {"name": "Bob", "age": 30}
for key, value in user.items():
print(f"{key}: {value}")
実行結果:
name: Bob
age: 30
3. よくある使い方・応用例
3-1. 関数の戻り値を複数の変数に代入
関数が複数の値を返すとき、アンパックでスッキリと書けます。
# 関数の戻り値をアンパック
def get_status():
return 200, "OK"
code, message = get_status()
print(code)
print(message)
実行結果:
200
OK
3-2. *(アスタリスク)を使った柔軟なアンパック
一部だけを変数に取り出し、残りをまとめて受け取ることもできます。
# 先頭と末尾だけ取り出して、残りをまとめて取得
numbers = [1, 2, 3, 4, 5]
first, *middle, last = numbers
print(first)
print(middle)
print(last)
実行結果:
1
[2, 3, 4]
5
3-3. zipと組み合わせて複数のリストを同時に処理
names = ["Tom", "Jerry"]
ages = [28, 31]
for name, age in zip(names, ages):
print(f"{name} is {age} years old.")
実行結果:
Tom is 28 years old.
Jerry is 31 years old.
4. アンパック代入の注意点・エラー対策
4-1. 変数の数と要素数が一致しないとエラー
アンパック代入では、左辺の変数数と右辺の要素数が一致しないとエラーになります。
# エラー例:要素数が不足している
values = (10, 20)
a, b, c = values # ValueError!
対処法: *演算子(アンパック)を使って残りをまとめると柔軟に対応できます。
4-2. 辞書のアンパックはitems()を使う
辞書をループでアンパックするには、items()
を忘れずに。
# エラーになる例
d = {"a": 1, "b": 2}
for k, v in d: # TypeError!
print(k, v)
正しい書き方:
for k, v in d.items():
print(k, v)
5. まとめ
今回は、Pythonのアンパック代入について、タプル・リスト・辞書の基本から応用、注意点までを丁寧に解説しました。
- タプルやリストの要素を一度に変数に代入できる
- 辞書ではitems()を活用してキーと値を取り出す
- *演算子を使えば柔軟な代入が可能
実務では、関数の戻り値や複数データの一括処理などで頻繁に使われます。アンパック代入をマスターして、Pythonコードをより簡潔かつ可読性の高いものにしましょう。
💡学習のコツ:小さなコードで試しながら、「変数の数と値の数が一致するか」を意識するとミスが減ります。