タプル

Python

タプルとは

タプル(tuple)は、リストと同様に複数の要素を格納するためのデータ型の一つである。しかし、リストとは異なり、タプルは変更不可能な(immutable)オブジェクトである。つまり、一度作成されたタプルはその内容を変更することができない。

タプルは、丸括弧 ( ) で囲んで表される。タプルの各要素は、カンマ(,)で区切られる。

# タプルの例
t = (1, 2, 3, 4, 5)

リストと同様に、インデックスを使ってタプルの要素にアクセスすることができる。

# タプルの要素にアクセスする例
t = (1, 2, 3, 4, 5)
print(t[0])  # 1が出力される
print(t[3])  # 4が出力される

タプルの利用例

タプルは、変更不可能なオブジェクトであるため、リストとは異なる利用方法がある。具体的には、次のような場合にタプルが利用される。

  • 複数の値を一度に返す必要がある場合
  • イミュータブルなオブジェクトを必要とする場合

複数の値を一度に返す

タプルは複数の値を一度に返すためによく利用される。例えば、関数から複数の値を一度に返す場合に、タプルを使って返すことができる。

# タプルを使って複数の値を一度に返す例
def calc(a, b):
    return a + b, a - b, a * b

result = calc(3, 2)
print(result)  # (5, 1, 6)が出力される

イミュータブルなオブジェクト

タプルは変更不可能なオブジェクトであるため、リストとは異なり、安全に使うことができる。例えば、辞書のキーとして利用することができる。

# タプルを辞書のキーとして利用する例
d = { (1, 2): "apple", (3, 4): "banana" }
print(d[(1, 2)])  # "apple"が出力される

タプルの結合

複数のタプルを結合して新しいタプルを作ることができます。結合には + 演算子を使います。

tuple1 = (1, 2, 3)
tuple2 = ('a', 'b', 'c')
tuple3 = tuple1 + tuple2
print(tuple3)  # (1, 2, 3, 'a', 'b', 'c')

タプルの繰り返し

タプルを繰り返して新しいタプルを作ることができます。繰り返しには * 演算子を使います。

tuple1 = ('a', 'b')
tuple2 = tuple1 * 3
print(tuple2)  # ('a', 'b', 'a', 'b', 'a', 'b')

タプルの要素数

タプルの要素数を取得するには、len() 関数を使います。

tuple1 = ('a', 'b', 'c')
print(len(tuple1))  # 3

タプルの要素の検索

タプルにある要素を検索するには、in 演算子を使います。

tuple1 = ('a', 'b', 'c')
print('a' in tuple1)  # True
print('d' in tuple1)  # False

タプルのアンパック

タプルの要素を個別の変数にアンパックすることができます。変数の数とタプルの要素数が一致している必要があります。

tuple1 = ('a', 'b', 'c')
x, y, z = tuple1
print(x)  # 'a'
print(y)  # 'b'
print(z)  # 'c'

アンパックする際には、要素の数が多い場合はエラーになります。

tuple1 = ('a', 'b', 'c')
x, y = tuple1  # エラー

タプルの比較

タプルは要素の比較が可能です。比較は要素の順序から始まり、異なる要素が見つかった時点で結果が決まります。

tuple1 = (1, 2, 3)
tuple2 = (1, 2, 4)
print(tuple1 == tuple2)  # False
print(tuple1 < tuple2)   # True
print(tuple1 > tuple2)   # False

タプルの注意点

  • タプルは不変(immutable)であるため、一度作成されたタプルの要素は後から変更することができない。
  • ただし、タプルに含まれる要素が変更可能なオブジェクトである場合は、そのオブジェクト自体は変更できる。
  • タプルを使用することで、不必要に要素の変更を許可してしまうことを避けることができる。
  • 関数の戻り値として、複数の値を返す場合に便利である。
  • タプルはリストと同様、インデックスやスライスを使用して要素にアクセスすることができる。ただし、タプルは不変であるため、要素を変更することはできない。
  • タプルに含まれる要素が1つだけの場合は、最後にカンマを付けて定義する必要がある(例:(10,))。
  • 空のタプルは、空の括弧で作成することができる(例:empty_tuple = ())。

コメント