Python のアンパック演算子の活用法

アンパック演算子(* と **)は、引数の受け取りだけでなく、さまざまな場面で活用できます。

リスト・タプルのアンパック

複数のイテラブルを結合したり、要素を展開できます。

a = [1, 2, 3]
b = [4, 5, 6]
combined = [*a, *b]
print(combined)  # [1, 2, 3, 4, 5, 6]

辞書のアンパック

辞書を結合する際に ** を使います。

defaults = {"color": "red", "size": "M"}
custom = {"size": "L", "price": 1000}
merged = {**defaults, **custom}
print(merged)  # {'color': 'red', 'size': 'L', 'price': 1000}

後から指定した辞書の値で上書きされます。

代入時のアンパック

残りの要素をまとめて受け取れます。

first, *middle, last = [1, 2, 3, 4, 5]
print(first)   # 1
print(middle)  # [2, 3, 4]
print(last)    # 5

先頭や末尾だけ取り出したい場合に便利です。

head, *tail = [1, 2, 3, 4]
print(head)  # 1
print(tail)  # [2, 3, 4]

*init, last = [1, 2, 3, 4]
print(init)  # [1, 2, 3]
print(last)  # 4

関数呼び出しでの活用

複数のリストをまとめて渡す場合にも使えます。

def func(a, b, c, d):
    print(a, b, c, d)

args1 = [1, 2]
args2 = [3, 4]
func(*args1, *args2)  # 1 2 3 4

アンパック演算子を使いこなすと、コードがシンプルになり、データ操作が直感的になります。