タプル

タプルは、リストに似ていますが、変更不可能(イミュータブル)なデータ構造です。一度作成すると、その内容を変更することはできません。タプルは、固定されたデータの集合を保持するのに適しています。この章では、タプルの作成、操作、およびタプルの特性について学びます。


タプルの作成

タプルは丸括弧 () を使って作成します。要素はカンマで区切ります。タプルは複数のデータ型の要素を含むことができます。

# タプルの作成
fruits = ("apple", "banana", "cherry")
numbers = (1, 2, 3, 4, 5)
mixed = (1, "apple", 3.14, True)

要素へのアクセス

タプルの要素には、インデックスを使ってアクセスできます。インデックスは0から始まります。

# 要素へのアクセス
print(fruits[0])  # 出力: apple
print(fruits[1])  # 出力: banana
print(fruits[2])  # 出力: cherry

負のインデックスを使うと、タプルの末尾から要素にアクセスできます。

print(fruits[-1])  # 出力: cherry
print(fruits[-2])  # 出力: banana

タプルの長さ

タプルの長さ(要素の数)は、len 関数を使って取得できます。

print(len(fruits))  # 出力: 3

タプルのネスト

タプルは他のタプルやリストを含むことができます。これをネストと呼びます。

# タプルのネスト
nested_tuple = (1, (2, 3), ["a", "b", "c"])
print(nested_tuple)  # 出力: (1, (2, 3), ['a', 'b', 'c'])

タプルのアンパック

タプルのアンパックを使うと、タプルの要素を個別の変数に代入することができます。

# タプルのアンパック
person = ("John", 30, "New York")
name, age, city = person
print(name)  # 出力: John
print(age)   # 出力: 30
print(city)  # 出力: New York

タプルの結合と複製

タプルを結合するには + 演算子を使い、タプルを複製するには * 演算子を使います。

# タプルの結合
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined = tuple1 + tuple2
print(combined)  # 出力: (1, 2, 3, 4, 5, 6)

# タプルの複製
repeated = tuple1 * 3
print(repeated)  # 出力: (1, 2, 3, 1, 2, 3, 1, 2, 3)

タプルのスライス

タプルの一部を取得するには、スライス構文を使います。スライス構文は タプル[開始:終了:ステップ] の形式で指定します。

# タプルのスライス
numbers = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
print(numbers[2:5])  # 出力: (2, 3, 4)
print(numbers[:5])   # 出力: (0, 1, 2, 3, 4)
print(numbers[5:])   # 出力: (5, 6, 7, 8, 9)
print(numbers[::2])  # 出力: (0, 2, 4, 6, 8)
print(numbers[::-1]) # 出力: (9, 8, 7, 6, 5, 4, 3, 2, 1, 0)

タプルの用途

タプルは変更ができないため、以下のような用途に適しています:

  1. 変更しないデータの保持:データが変更されることがない場合、タプルを使うと安全です。
  2. 辞書のキー:タプルはハッシュ可能であるため、辞書のキーとして使用できます(リストは使用できません)。
  3. 複数の戻り値:関数が複数の値を返す際に、タプルを使ってまとめて返すことができます。
# 複数の戻り値を返す関数
def get_person():
    name = "Alice"
    age = 28
    city = "London"
    return name, age, city

person = get_person()
print(person)  # 出力: ('Alice', 28, 'London')

まとめ

この章では、Pythonのタプルについて学びました。タプルは変更不可能なデータ構造であり、一度作成するとその内容を変更することはできません。リストと似た操作が可能ですが、データの安全性を保つためにタプルが利用されることが多いです。次の章では、辞書について学びます。辞書はキーと値のペアを保持するデータ構造で、データの高速な検索と操作が可能です。