Python タプル: 不変シーケンスとアンパック

Python タプルを理解します。リストではなくタプルをいつ使用するか、タプルのアンパックがどのように機能するか、不変性によってデータの安全性がどのように保証されるかを学びます。

エディターで試してみる

概要

タプルは、Python における順序付けされた不変の要素のシーケンスです。角括弧「[]」で囲まれ変更可能なリストとは異なり、タプルは括弧「()」で囲まれており、作成後に変更することはできません。タプル内の要素を追加、追加、削除、または再割り当てしようとすると、実行時エラーが発生します。この不変性は安全機能として機能し、アプリケーション内で渡されるデータが一定かつ安全に保たれることを保証します。

タプルは不変であるため、リストよりも高速で、使用するメモリも少なくなります。また、ハッシュ可能であるため (タプル内のすべての要素がハッシュ可能である場合)、辞書内のキーまたはセット内の要素として使用できます。この機能リストはサポートしていません。タプルは伝統的に、データベース行、座標、または RGB カラー値を表すなど、異種データ レコードをグループ化するために使用されます。

タプルの最もエレガントな機能の 1 つは、タプルのアンパッキングです。これにより、タプルの要素を 1 行で個々の変数に割り当てることができます (例: `x, y = 座標`)。関数から複数の値を返す場合によく使用されます。 Python では、一時的な 3 番目の変数を必要とせずに、アンパック (`a, b = b, a`) を使用して変数を動的に交換することもできるため、コードが大幅にクリーンになり、理解しやすくなります。

コードと実行の出力

タプルとして座標を作成し、不変性の制限を示し、要素を解凍します。

# Creating tuples
location = (40.7128, -74.0060)  # NYC Coordinates
print(f"Latitude: {location[0]}, Longitude: {location[1]}")

# Tuple unpacking
lat, lon = location
print(f"Unpacked Lat: {lat} | Unpacked Lon: {lon}")

# Function returning multiple values
def get_user_info():
    return "Alice", 25, "admin"

name, age, role = get_user_info()
print(f"{name} ({role}) is {age} years old.")
端子出力
Latitude: 40.7128, Longitude: -74.006
Unpacked Lat: 40.7128 | Unpacked Lon: -74.006
Alice (admin) is 25 years old.

段階的な実装

  • ヘルパー関数から複数の値をきれいに返す
  • 座標、色、データベース レコードなどの定数の保存
  • 多次元マッピング用の不変辞書キーの定義

よくある質問

単一の要素を持つタプルを定義するにはどうすればよいですか?

要素の後に末尾のカンマを含める必要があります (single_item = (42,) など)。カンマがないと、Python はそれを標準のかっこで囲まれた式として扱います。

タプル内にネストされたリストを変更できますか?

はい。タプル参照自体は不変ですが、リストなどの変更可能なオブジェクトが含まれている場合は、それらのリストの内容をその場で変更できます。

関連トピック

推奨される Python リソース

関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。