とある変人のお道具箱

技術系のことにについて幅広く触れていくブログです

【Python】set型の集合演算

Pythonのsetは集合の演算を全てサポートしています。 演算子を使う方法とset型のメソッドを使う方法があるので両方とも紹介します。     

set型について

  • 重複する要素を持たない、要素の集まり
  • 順序づけはされない
  • {}内に,区切りで要素を記述する (例 : set_A = {1,3,4,5,2})
  • set関数にシーケンスを渡す

以下の説明で

set_A = {1,2,3,4,5}
set_B = {3,5,7}

を用いる

和集合(union)

AかBに含まれる

print(set_A | set_B)    #{1, 2, 3, 4, 5, 7}
print(set_A.union(set_B))   #{1, 2, 3, 4, 5, 7}

積集合(intersection)

AとBどちらにも含まれる

print(set_A & set_B)   #{3, 5}
print(set_A.intersection(set_B))   #{3, 5}   

差集合(difference)

Aだけに含まれる

print(set_A - set_B)   #{1, 2, 4}
print(set_A.difference(set_B))   #{1, 2, 4}

対象差集合(symmetric difference)

AまたはBだけに含まれる

print(set_A ^ set_B)   #{1, 2, 4, 7}
print(set_A.symmetric_difference(set_B))   #{1, 2, 4, 7}

部分集合の判定

set_C = {1,2}
set_D = {1,2,4,6}
print(set_C <= set_D)   #True
print(set_C.issubset(set_D)   #True
print(set_C >= set_D)   #False
print(set_C.issuperset(set_D))   #False

互いに素かの判定

set_1 = {0,1}
set_2 = {1,2}
set_3 = {2,3}
print(set_1.isdisjoint(set_2))   #False
print(set_1.isdisjoint(set_3))   #True