集合の基礎

入門Python3 3.5


集合とは辞書のキーだけのようなもの、もしくは重複の無いリストのようなものである。

でこの集合を使って何ができるかというと、集合同士で比較することができ、例えば一方に含むものや両方に含むものといったようなそういう比較を簡単に実装できるかんじですね。

空集合の生成

hash_set = set()
print(hash_set)
$ py main.py
set()

集合の作成

hash_set = {1,2,3,4}
print(hash_set)
$ py main.py
{1, 2, 3, 4}

辞書の生成と同じように見えますが、辞書がキーと値のセットなのに対して集合はリストやタプルの用にカンマのみで定義するかんじになってます。

また集合は重複した値は許可されていません。よって重複した要素を入れた場合は自動で除去されます。

hash_set = {1,2,3,4,1} # 1が重複
print(hash_set)
$ py main.py
{1, 2, 3, 4}

intersectionによる積集合

お互いの集合に含まれるものだけを返す。

hash_set1 = {1,2}
hash_set2 = {2,3}
result = hash_set1.intersection(hash_set2)
print(result)
$ py main.py
{2}

またintersectionの変わりに&でも同じ処理になる。

result = hash_set1 & hash_set2

unionによる和集合

お互いの集合を混ぜ合わせたものを返す。

hash_set1 = {1,2}
hash_set2 = {2,3}
result = hash_set1.union(hash_set2)
print(result)
$ py main.py
{1, 2, 3}

またunionの変わりに|でも同じ処理になる。

result = hash_set1 | hash_set2

differenceによる差集合

左の集合から右の集合を取り除いたものを返す。

hash_set1 = {1,2}
hash_set2 = {2,3}
result = hash_set1.difference(hash_set2)
print(result)
$ py main.py
{1}

またdifferenceの変わりに-でも同じ処理になる。

result = hash_set1 - hash_set2

これら積集合、和集合、差集合以外にも色々な演算ができるみたいですが使用頻度はあまり高くなさそうなので基礎としてはこれくらいで。