初心者のためのpython入門

自分がつまづいたところやつまづきやすいところを中心に書いていきます。また、役に立つライブラリの紹介などをしていきます。

集合

集合について

集合は、辞書からキーだけを残した辞書のようなものです。つまり、集合においてもキーは一意でなければいけません。集合は、要素としてその値が存在するかどうかだけに注目しているときに使います。Pythonの集合は、数学における集合とほぼ同じに考えることができます。つまり、和集合や積集合、空集合などがあります。

集合の作成

集合の作成には、set()関数か1個以上のカンマ区切りの値を波括弧("{}")で囲みます。set関数にはリストやタプル、辞書などを引数として与えることができます。set()関数に辞書を与えた場合はキーだけが使われます。要素が1つもない状態を波括弧で囲むと空辞書になります。

>>> sample_set1 = set()
>>> sample_set 1
set()
>>> sample_set2 = set([1, 1, 2, 3])
>>> sample_set2 
{1, 2, 3}
>>> sample_set3 = set({1: 1, 2: 2, 3: 3})
>>> sample_set3
{1, 2, 3}
>>> sample_set4 = {1, 2, 3}
>>> sample_set4
{1, 2, 3}
>>> sample_set5 = {'one', 'two', 'three'}
>>> sample_set5
{'one', 'three', 'two'}

組み合わせ

辞書は、数学のように和集合・積集合・差集合などが定義されています。 集合演算子についてまとめておきましょう。

  • set1 | set2: 和集合(少なくとも一方の集合に含まれている要素の集合)。set1.union(set2)でも同じ。
  • set1 & set2: 積集合(両方の集合に含まれている要素の集合)。
  • set1 - set2: 差集合(set1の集合には含まれていて、set2には含まれていない要素の集合)。set1.difference(set2)でも同じ。
  • set1 ^ set2: 排他的論理和(少なくとも一方の集合には含まれているが、両方の集合には含まれていない要素の集合)。set1.symmetric_difference(set2)でも同じ。
>>> set1 = {2, 3, 5, 7, 11}
>>> set2 = {1, 3, 5, 7, 9}
>>> set1 | set2
{1, 2, 3, 5, 7, 9, 11}
>>> set1 & set2
{3, 5, 7}
>>> set1 - set2
{2, 11}
>>> set1 ^ set2
{1, 2, 9, 11}
  • set1 <= set2: 部分集合(set1の集合の要素が全て、set2の集合の要素に含まれる)。set1.issubset(set2)でも同じ。
  • set1 < set2: 真部分集合(set2がset1の要素全てに加え何かしらの要素を持っている)。
  • set1 >= set2: 上位集合(set2の集合の要素が全て、set1の集合の要素に含まれる)。set1.issuperset(set2)でも同じ。
  • set1 > set2: 真上位集合(set1がset2の要素全てに加え何かしたの要素を持っている)。
>>> set1 = {3, 5, 7, 11, 13, 17}
>>> set2 = {1, 3, 5, 7, 9, 11, 13, 17}
>>> set1 <= set2
True
>>> set1 < set2
True
>>> set1 >= set2
False
>>> set1 > set2
False
>>> set1 > set1
False
>>> set1 >= set1
True

最後に

次回は、いよいよ制御構造の話です。