ちょうど数学の「集合」のように扱われるので、集合型という。
集合型独自の関数が最初から用意されていたり、特定の処理をリストと比較して高速に行える。
x in set
: ある値が含まれるかのチェックが速いs & t
: 2つの集合に共通して含まれる要素s ^ t
: どちらか一方だけに含まれる要素全ての共通要素を得る必要は無く、1つでもあるか無いかだけ調べたい場合、どのような書き方が速いか。
以下のサイトで、詳しく説明されている。
Test if lists share any items in python - Stack Overflow
generator expressionを除いては、遅くとも1回あたり0.2~0.3ミリ秒くらいなので、チェック回数が数万程度ならそこまで気にするものでもないだろう。
if a & b: pass # 何らかの処理
aとbの共通要素を求めてから、要素が空かどうか調べる。
if any(i in b for i in a): pass # 何らかの処理
for .. in ..
ループを回すので、組み込みと比べて速度的に不利if not a.isdisjoint(b): pass # 何らかの処理
「2つの集合が共通要素を持たない」ことを調べる関数isdisjoint()
を利用する