Pythonのデータ型には、ミュータブル(変更可能)とイミュータブル(変更不可能)の2つのカテゴリがあります。この記事では、Pythonのセットがどちらに分類されるのか、そしてその意味を詳しく解説します。
Pythonのセットはミュータブル
Pythonのセットはミュータブルなデータ型です。つまり、セット自体は変更可能で、要素を追加したり削除したりすることができます。しかし、セットに含まれる要素はイミュータブルな型でなければなりません。これは、セットが内部的にハッシュテーブルを使用して要素を格納するため、その要素がハッシュ可能である必要があるからです。
以下に、Pythonのセットがミュータブルであることを示す例を示します:
x = set([1, 2, 3]) # セットを作成
y = x # yにxの参照を代入
y |= set([4, 5, 6]) # yに要素を追加
print(x) # xの出力
# 出力:set([1, 2, 3, 4, 5, 6])
print(y) # yの出力
# 出力:set([1, 2, 3, 4, 5, 6])
この例では、yに要素を追加した後も、xとyは同じオブジェクトを指しています。これは、セットがミュータブルであるため、yへの変更がxにも反映されるからです。
まとめ
Pythonのセットはミュータブルなデータ型で、その要素はイミュータブルでなければなりません。セット自体は変更可能で、要素を追加したり削除したりすることができます。しかし、セットに含まれる要素は、ハッシュ可能である必要があります。これは、セットが内部的にハッシュテーブルを使用して要素を格納するためです。