集合と他の集合との関係を調べる(等しいかどうか、部分集合かどうかなど)

広告
eyecatch

集合と集合が等しいかどうか、また集合が他の集合の部分集合かどうかなど集合と他の集合との関係を調べる方法について解説します。

集合が他の集合と等しいかどうか

集合が他の集合と等しいかどうかについては比較演算子の == で調べることができます。また等しくないかどうかについては比較演算子の != で調べることができます。

集合1 == 集合2
集合1 != 集合2

集合1の要素が集合2にすべて含まれており、集合2の要素が集合1にすべて含まれている場合に True となります。

>>> set1 = {"A", "B", "C"}
>>> set2 = {"B", "C", "A"}
>>> set1 == set2
True
>>>

等しいかどうかの比較は set 型のオブジェクトと frozenset 型のオブジェクトでも可能です。

>>> set1 = {"A", "B", "C"}
>>> set2 = frozenset(["B", "A", "C"])
>>> set1 == set2
True
>>>

集合が他の集合と互いに素かどうか

集合が他の集合の部分集合であるかどうかは比較演算子の <= で調べることができます。

集合1 <= 集合2

集合 1 の要素がすべて集合 2 に含まれている場合、集合 1 は集合 2 の部分集合であるといいます。

次の例では set1 は set2 の部分集合です。逆に set2 は set1 の部分集合ではありません。 set1 と set3 が等しい場合も set1 は set3 の部分集合となります。

>>> set1 = {"A", "B"}
>>> set2 = {"B", "D", "C", "A"}
>>> set3 = {"B", "A"}
>>> set1 <= set2
True
>>> set2 <= set1
False
>>> set1 <= set3
True
>>>

部分集合かどうかは set 型や frozenset 型で用意されている issubset メソッドを使っても調べることができます。

集合1.issubset(集合2)

集合 1 が集合 2 の部分集合の時に True となります。

>>> set1 = {"A", "B"}
>>> set2 = {"B", "D", "C", "A"}
>>> set3 = {"A", "B"}
>>> set1.issubset(set2)
True
>>> set2.issubset(set1)
False
>>> set1.issubset(set3)
True
>>>

集合が他の集合の真部分集合かどうか

集合が他の集合の真部分集合であるかどうかは比較演算子の < で調べることができます。

集合1 < 集合2

集合 1 の要素がすべて集合 2 に含まれており、且つ集合 1 と集合 2 が等しくない場合、集合 1 は集合 2 の真部分集合であるといいます。

次の例では set1 は set2 の真部分集合です。逆に set2 は set1 の真部分集合ではありません。 set1 と set3 が等しい場合も真部分集合ではありません。

>>> set1 = {"A", "B"}
>>> set2 = {"B", "D", "C", "A"}
>>> set3 = {"A", "B"}
>>> set1 < set2
True
>>> set2 < set1
False
>>> set1 < set3
False
>>>

集合が他の集合の超集合かどうか

集合が他の集合の超集合であるかどうかは比較演算子の >= で調べることができます。

集合1 >= 集合2

集合 2 の要素がすべて集合 1 に含まれている場合、集合 1 は集合 2 の超集合であるといいます。

次の例では set1 は set2 の超集合ではありませんが、 set2 は set1 の超集合です。 set1 と set3 が等しい場合も set1 は set3 の超集合となります。

>>> set1 = {"A", "B"}
>>> set2 = {"B", "D", "C", "A"}
>>> set3 = {"B", "A"}
>>> set1 >= set2
True
>>> set2 >= set1
False
>>> set1 >= set3
True
>>>

超集合かどうかは set 型や frozenset 型で用意されている issuperset メソッドを使っても調べることができます。

集合1.issuperset(集合2)

集合 1 が集合 2 の超集合の時に True となります。

>>> set1 = {"A", "B"}
>>> set2 = {"B", "D", "C", "A"}
>>> set3 = {"A", "B"}
>>> set1.issuperset(set2)
True
>>> set2.issuperset(set1)
False
>>> set1.issuperset(set3)
True
>>>

集合が他の集合の真超集合かどうか

集合が他の集合の真超集合であるかどうかは比較演算子の > で調べることができます。

集合1 > 集合2

集合 2 の要素がすべて集合 1 に含まれており、且つ集合 1 と集合 2 が等しくない場合、集合 1 は集合 2 の真超集合であるといいます。

次の例では set1 は set2 の真超集合ではありませんが、 set2 は set1 の真超集合です。 set1 と set3 が等しい場合も真超集合ではありません。

>>> set1 = {"A", "B"}
>>> set2 = {"B", "D", "C", "A"}
>>> set3 = {"A", "B"}
>>> set1 > set2
True
>>> set2 > set1
False
>>> set1 > set3
False
>>>

集合が他の集合と互いに素かどうか

集合が他の集合と互いに素かどうかをは set 型や frozenset 型で用意されている isdisjoint メソッドで調べることができます。

集合1.isdisjoint(集合2)

集合1 と集合 2 が同じ要素を一つも持たないとき、集合 1 は集合 2 と互いに素であるといいます。

次の例では set1 は set2 は共通の要素がないので互いに素ですが、 set1 と set3 および set2 と set3 は共通する要素があるので素ではありません。

>>> set1 = {"A", "B"}
>>> set2 = {"C", "D", "E"}
>>> set3 = {"A", "C"}
>>> set1.isdisjoint(set2)
True
>>> set1.isdisjoint(set3)
False
>>> set2.isdisjoint(set3)
False
>>>

-- --

集合と集合が等しいかどうか、また集合が他の集合の部分集合かどうかなど集合と他の集合との関係を調べる方法について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。