集合の包含判定(含む・含まれないの判定)

集合の包含判定(含む・含まれないの判定)

 比較演算子set オブジェクト に備わるメソッドを使うと、ある集合が別の集合に含まれる(部分集合である)かどうかというような 包含判定(含む・含まれないの判定) が可能です。

比較演算子を用いた包含判定

 集合演算の詳細については、≫ 数学教室の記事 を参照してください。

  包含関係 上位集合と部分集合

集合が等しいかどうかの判定

 2 つの set オブジェクトの要素が完全に一致しているかどうかを調べるときには「 == 」もしくは「 != 」を用います。ただし、要素の順序は判定に影響しません。

# 南米の国々 A
myset_A = {"ブラジル", "パラグアイ", "アルゼンチン"}

# 南米の国々 B
myset_B = {"アルゼンチン", "ブラジル", "パラグアイ"}

# A と B は等しい?
tf_1 = myset_A == myset_B

# A と B は等しくない?
tf_2 = myset_A != myset_B

print(tf_1, tf_2)
True False

 

部分集合の判定

 setA と setB という 2 つの set オブジェクトがあったとき、setA が setB を含むか (setA が setB の上位集合であるかどうか) を判定したいときは「>=」を使います。逆にsetA が setB に含まれるか (setA が setB の部分集合であるかどうか) を判定したいときは「<=」を使います。

# 南米の国々 A
myset_A = {"ブラジル", "パラグアイ", "エクアドル", "ペルー", "アルゼンチン"}

# 南米の国々 B
myset_B = {"ブラジル","アルゼンチン"}

# A は B を含む?
tf_1 = myset_A >= myset_B

# A は B に含まれる?
tf_2 = myset_A <= myset_B

print(tf_1, tf_2)
True False

 

真部分集合の判定

 集合 A が集合 B の部分集合ではあるけれど、集合 B と一致していなければ、 A は B の真部分集合であるといいます。Python で真部分集合であるかどうかを判定するときは比較演算子「<」を使います。

# 南米の国々 A
myset_A = {"ブラジル", "パラグアイ", "アルゼンチン"}

# 南米の国々 B
myset_B = {"アルゼンチン", "ブラジル", "パラグアイ"}

# 南米の国々 C
myset_C = {"アルゼンチン", "ボリビア", "パラグアイ", "コロンビア", "ブラジル"}

# A は B の真部分集合?
tf_1 = myset_A < myset_B

# A は C の真部分集合?
tf_2 = myset_A < myset_C

print(tf_1, tf_2)
False True

 

見て試してわかる機械学習アルゴリズムの仕組み 機械学習図鑑

新品価格
¥2,894から
(2019/8/6 11:45時点)

メソッドを用いた包含判定

set.issuperset() 上位集合

setA.issuperset (setB)

 issuperset()メソッドは setA が引数に指定した setB を含むか(上位集合であるか)を真偽値 (True もしくは False) で返します。

# ヨーロッパの国々 A
myset_A = {"イタリア", "イギリス", "ドイツ", "フランス", "デンマーク"}

# ヨーロッパの国々 B
myset_B = {"イギリス", "デンマーク", "フランス"}

# 集合 A は集合 B を含む?
tf_1 = myset_A.issuperset(myset_B)

# 集合 A は集合 B を含む?
tf_2 = myset_B.issuperset(myset_A)

print(tf_1, tf_2)
True False

 

set.issubset() 部分集合

set.issubset (set2)

 issubset()メソッドは setオブジェクトが引数に指定した set2 に含まれるか(部分集合であるか)を真偽値で返します。

# ヨーロッパの国々 A
myset_A = {"イタリア", "イギリス", "ドイツ", "フランス", "デンマーク"}

# ヨーロッパの国々 B
myset_B = {"イギリス", "デンマーク", "フランス"}

# 集合 A は集合 B に含まれる?
tf_1 = myset_A.issubset(myset_B)

# 集合 B は集合 A に含まれる?
tf_2 = myset_B.issubset(myset_A)

print(tf_1, tf_2)
False True

 

set.isdisjoint() 共通集合が空集合

setA.isdisjoint (setB)

 集合 A と B が互いに交わりをもたない(共通部分が空集合となる)ことを「 A と B は互いに素である」といいます。Python の isdisjoint()メソッドは setA と setB が互いに素であるときには True を、そうでない場合は False を返します。

# アフリカの国々 A
myset_A = {"コンゴ","ナイジェリア","南アフリカ"}

# アフリカの国々 B
myset_B = {"ガーナ","コートジボワール","ケニア"}

# アフリカの国々 C
myset_C = {"エジプト","エチオピア","南アフリカ"}

# A と B は互いに素?
tf_1 = myset_A.isdisjoint(myset_B)

# A と C は互いに素?
tf_2 = myset_A.isdisjoint(myset_C)

print(tf_1, tf_2)
True False