Python 速習チュートリアル

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)」について見ていきましょう。