Pythonタプル完全ガイド:パッキング、アンパッキング、比較、スライス、辞書キー活用
Pythonにおけるタプルマッチングの理解
タプルマッチングは、指定された要素(通常は第2要素)を比較してタプルをグループ化する手法です。一般的なパターンは、タプルの要素をキーとして辞書を使うことです。また、既存タプルのスライスから新しいタプルを構築することもできます。
タプルの基本構文
カンマ区切りの値を括弧で囲んでタプルを定義:
tup = ('Jan', 'Feb', 'Mar')
空タプルは二重括弧: tup1 = ()。単一値の場合は末尾にカンマ: tup1 = (50,)。インデックスは0から始まり、連結とスライスをサポートします。
タプル代入
Pythonではタプルを使って複数変数への同時代入が可能です。構造化データのアンパッキングに便利です。
例:
tup1 = ('Robert', 'Carlos', '1965', 'Terminator 1995', 'Actor', 'Florida')
tup2 = (1, 2, 3, 4, 5, 6, 7)
print(tup1[0]) # Robert
print(tup2[1:4]) # (2, 3, 4)
パッキングとアンパッキング
「パッキング」は値を新しいタプルに格納、「アンパッキング」はタプルから値を取り出して変数に割り当てます。
x = ('Guru99', 20, 'Education')
(company, emp, profile) = x
print(company) # Guru99
print(emp) # 20
print(profile) # Education
タプルの比較
比較演算子(<, >, == 等)は辞書順で動作: 最初に異なる要素が結果を決定します。
# ケース1
a = (5, 6)
b = (1, 4)
if a > b:
print('a is bigger')
else:
print('b is bigger')
同様に、最初の要素が等しければ次の要素で比較が続きます。
タプルを辞書キーとして使用
タプルはハッシュ可能なので、リストとは異なり辞書キーとして使用できます。
directory = {('last', 'first'): '555-1234'}
for last, first in directory:
print(first, last, directory[(last, first)])
辞書アイテムをキー・値タプルのリストとして取得:
a = {'x': 100, 'y': 200}
b = list(a.items())
print(b) # [('x', 100), ('y', 200)]
タプルの削除
タプルはイミュータブルなので個々の要素を削除できません。しかし、del文でタプルオブジェクト全体を削除できます。
タプルのスライス
スライス構文はリストと同様にタプルでも動作します:
x = ('a', 'b', 'c', 'd', 'e')
print(x[2:4]) # ('c', 'd')
タプル用組み込み関数
タプルはall()、any()、enumerate()、max()、min()、sorted()、len()、tuple()などの関数とシームレスに動作します。
リストよりタプルが優れている点
- イミュータブルなため、タプルのイテレーションはわずかに高速
- イミュータブルなシーケンスのみが辞書キーになれる;タプルがその役割に適合
- イミュータブルなデータをタプルに格納すれば、誤った変更を防止可能
クイックサマリー
- パッキングとアンパッキングでクリーンなデータ受け渡しが可能
- タプルは辞書順で比較可能
- 複合辞書キーとしてタプルを活用
- タプルはイミュータブル;
delでオブジェクト全体を削除 - スライスで部分配列を効率的に取得
Python
- Python データ型マスター: 実践ガイド
- Python 演算子完全マスター: 包括的ガイド
- Python pass文完全マスター: 実践ガイド
- Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
- Python辞書完全ガイド:作成、操作、高度なテクニック
- Pythonイテレータ完全ガイド:仕組みと自作方法
- Pythonクロージャ解説:ネスト関数が変数を捕捉する仕組み
- Python datetimeマスター:日付・時刻・タイムゾーン実践ガイド
- Pythonタプル完全ガイド:パッキング、アンパッキング、比較、スライス、辞書キー活用
- Python辞書:キー/値ペアの追加、更新、管理
- Python enumerate()をマスター:リスト、タプル、文字列、辞書でインデックス付きループ