Pythonにおけるタプルは「不変(immutable)」なデータ型であり、これは一度作成されたタプルの要素は変更できないという特性を意味します。この特性は、タプルがリストと大きく異なる点の一つです。
例えば、次のようなタプルがあるとします。
my_tuple = ("apple", "banana", "cherry")
このタプルの要素を変更しようとすると、Pythonはエラーを返します。
my_tuple[0] = "avocado" # TypeError: 'tuple' object does not support item assignment
上記のコードは、タプルの最初の要素(”apple”)を”avocado”に変更しようと試みていますが、タプルの不変性により、このような操作は許されていません。
ただし、タプル内にリストのような可変なデータ型が含まれている場合、その内部の可変なデータは変更することが可能です。例えば。
my_tuple = ([1, 2, 3], "banana", "cherry")
my_tuple[0][0] = "apple"
print(my_tuple) # Output: (["apple", 2, 3], "banana", "cherry")
これはタプルの外側のレベルでは要素が変更されていないため、問題なく動作します。タプル内のリストはその要素が変更可能な、独立したオブジェクトであるためです。
この不変性の特性は、特定の値がプログラムの実行中に変更されることなく保持されることを保証するため、非常に有用です。また、タプルは辞書のキーとして使うことができますが、これはタプルが不変であるためです。不変でなければならない状況でデータを扱う必要がある場合、タプルはとても便利なツールです。