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

広告

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

集合が他の集合と等しいかどうか(==,!=)

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

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

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

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

print(set1 == set2)
>> True

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

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

print(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"}

print(set1 <= set2)
>> True
print(set2 <= set1)
>> False
print(set1 <= set3)
>> True

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

集合1.issubset(集合2)

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

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

print(set1.issubset(set2))
>> True
print(set2.issubset(set1))
>> False
print(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"}

print(set1 < set2)
>> True
print(set2 < set1)
>> False
print(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"}

print(set1 >= set2)
>> False
print(set2 >= set1)
>> True
print(set1 >= set3)
>> True
print(set3 >= set1)
>> True

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

集合1.issuperset(集合2)

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

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

print(set1.issuperset(set2))
>> False
print(set2.issuperset(set1))
>> True
print(set1.issuperset(set3))
>> True
print(set3.issuperset(set1))
>> 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"}

print(set1 > set2)
>> False
print(set2 > set1)
>> True
print(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"}

print(set1.isdisjoint(set2))
>> True
print(set1.isdisjoint(set3))
>> False
print(set2.isdisjoint(set3))
>> False

-- --

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

( Written by Tatsuo Ikura )

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

著者 / TATSUO IKURA

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