Python タプルのアンパック
1. パッキングとアンパッキング
Pythonにおいて、タプルに値を代入することを「パッキング(Packing)」と呼びます。
# タプルのパッキング
fruits = ("apple", "banana", "cherry")逆に、タプルの中身を取り出して別々の変数に代入することを「アンパッキング(Unpacking)」と呼びます。
例:タプルをアンパックする
fruits = ("apple", "banana", "cherry")
(green, yellow, red) = fruits
print(green)
print(yellow)
print(red)2. アスタリスク * の使用 (Using Asterisk)
通常、アンパッキングする際の変数の数は、タプル内の項目数と一致している必要があります。数が合わない場合、Pythonはエラーを返します。
しかし、変数の数よりも項目の数の方が多い場合、変数名の前にアスタリスク * を付けることで、残りの項目を「リスト」としてまとめて受け取ることができます。
例:残りの値をリストとして受け取る
fruits = ("apple", "banana", "cherry", "strawberry", "raspberry")
(green, yellow, *red) = fruits
print(green) # apple
print(yellow) # banana
print(red) # ['cherry', 'strawberry', 'raspberry']2.1 アスタリスクを中間で使用する場合
アスタリスクは最後の変数だけでなく、中間の変数に付けることも可能です。その場合、Pythonは他の変数に値を割り当てた後、残ったすべての値をアスタリスク付きの変数に詰め込みます。
例:中間でアスタリスクを使用する
fruits = ("apple", "mango", "papaya", "pineapple", "cherry")
(green, *tropic, red) = fruits
print(green) # apple
print(tropic) # ['mango', 'papaya', 'pineapple']
print(red) # cherryプロのテクニック:
アスタリスクを用いたアンパッキングは、データの先頭と末尾だけが必要で、中間のデータの数が可変である場合(例えば、ログデータの解析やCSV処理など)に非常に強力な力を発揮します。
アンパッキングを使いこなすことで、インデックス番号(fruits[0] など)を何度も書く必要がなくなり、コードの意図が明確で読みやすい「Pythonic」な記述が可能になります。
次は、タプルを効率的に処理するための「ループ処理(Loop Tuples)」について見ていきましょう。