Pythonのデータ構造の一つであるset
は、内部的な実装が辞書(dict
)に非常に似ています。in
演算が定数オーダーで可能なことから考えて、辞書と同様にハッシュテーブルを使っていると推測されます。
以下に、Pythonのset
における主要な操作とその計算量を示します。
add
: 平均計算量 O(1), 最悪計算量 O(N)pop
: 平均計算量 O(1), 最悪計算量 O(N)in
: 平均計算量 O(1), 最悪計算量 O(N)
ここで、Nはセットの要素数を表します。
また、set
のdifference
操作は、集合の要素数の違いと新しい集合が必要か否かによって、どちらが良いのか選ぶ必要があります。例えば、以下のコードではs.difference_update(t)
の方が少し速いことが示されています。
for i in range(100):
s = set(range(1000000))
t = set(range(1000))
s.difference(t) # s.difference_update(t)
以上の情報を踏まえて、Pythonのset
を使用する際には、各操作の計算量を理解して適切な方法を選択することが重要です。