アンパック演算子( と *)は、引数の受け取りだけでなく、さまざまな場面で活用できます。
リスト・タプルのアンパック
複数のイテラブルを結合したり、要素を展開できます。
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
アンパック演算子を使いこなすと、コードがシンプルになり、データ操作が直感的になります。