Pythonのissubset()メソッドとは?部分集合の判定方法を実例付きで解説
この記事では、Python標準ライブラリで利用できるissubset()メソッドの基本的な仕組みと実践的な使い方について詳しく解説します。
issubset()メソッドとは
issubset()は、ある集合(セット)のすべての要素が、引数として渡した別の集合に含まれているかどうかを判定するメソッドです。すべての要素が含まれていればブール値のTrueを返し、1つでも含まれていない要素があればFalseを返します。
たとえば、集合Bの全要素が集合Aにも存在する場合、「BはAの部分集合(サブセット)」であると言えます。また、AとBが完全に同じ要素を持つ同一の集合である場合も、互いに部分集合の関係にあると判断されます。
基本構文
<セット1>.issubset(<セット2>)
- セット1: メソッドを呼び出す側の集合(必ずset型である必要があります)
- セット2: 比較対象となる引数(後述のとおり、任意のイテラブルを指定可能)
戻り値
ブール値(True または False)
それでは、具体的なコード例を見ながら動作を確認してみましょう。
使用例:セット同士の比較
A = {'t','u','t','o','r','i','a','l'}
B = {'t','u','t'}
C = {'p','o','i','n','t'}
print(B.issubset(A))
print(B.issubset(C))
A = set(str(A) + str(C))
print(C.issubset(A))
実行結果
True False True
コードの解説
最初のB.issubset(A)では、Bの全要素('t'、'u')がAに含まれているためTrueが返されます。一方、2つ目のB.issubset(C)では、Bの要素がCにすべて含まれていないためFalseとなります。
3つ目の処理では、文字列化したAとCを連結してからset()で型変換することで、新しい集合を作成しています。その結果、Cの全要素が新しいAに含まれるためTrueが出力されます。
使用例:リストやタプルなどのイテラブルを引数に渡す場合
issubset()の引数には、セット以外のイテラブル(リスト、タプル、文字列など)を渡すこともできます。これらは内部で自動的にセット型へ変換されてから比較されます。
A = ['t','u','t','o','r','i','a','l']
B = {'t','u','t'}
C = ('p','o','i','n','t')
D = {'p','o','i','n','t'}
print(B.issubset(A))
print(B.issubset(C))
A = set(str(A) + str(C))
print(D.issubset(A))
実行結果
True False True
コードの解説
この例では、リストAとタプルCをそれぞれissubset()の引数として渡しています。いずれの場合も、引数として渡されたイテラブルは暗黙的にセット型へ変換されるため、期待どおりの結果が得られます。
ただし注意点として、メソッドを呼び出す側(ドットの左側)のオブジェクトは必ずset型である必要があります。これは、インタプリタが「集合同士の比較」であることを正しく認識できるようにするためです。引数側は任意のイテラブルで問題ありませんが、呼び出し元がリストやタプルの場合はAttributeErrorが発生するので気をつけましょう。
なお、issubset()メソッドの代わりに演算子<=を使ってB <= Aのように記述しても、同じ部分集合の判定ができます。こちらの方が簡潔に書ける場面もありますので、用途に応じて使い分けるとよいでしょう。
まとめ
この記事では、Pythonのissubset()メソッドを使った部分集合の判定方法について学びました。主なポイントは以下のとおりです。
issubset()は、呼び出し元の集合の全要素が引数の集合に含まれるかを判定し、True/Falseを返す- 引数にはセットだけでなく、リスト・タプル・文字列などのイテラブルも指定できる
- メソッドを呼び出す側は必ずset型である必要がある
<=演算子でも同等の判定が可能
集合操作はデータの重複チェックやグルーピング処理などで頻繁に活用されます。issubset()をマスターして、Pythonでの集合操作の幅を広げてみてください。
-
Pythonのissubset()関数とは?部分集合の判定方法を実例付きで解説
本記事では、Python標準ライブラリに用意されているissubset()関数の仕組みと使い方について詳しく解説します。 issubset()メソッドは、あるセット(集合)のすべての要素が、引数として渡した別のセットにも含まれている場合にブール値のTrueを返し、1つでも含まれていない要素があればFalseを返します。 下の図では、BはAの部分集合です。もしAとBが同一のセットであれば、両者は互いに部分集合の関係にあるといえます。つまり、両方のセットがまったく同じ要素を持っているということを意味します。 構文 <set 1>.issubset(<set 2>) 戻り値
-
Pythonのissubset()メソッドとは?部分集合の判定方法を実例付きで解説
この記事では、Python標準ライブラリで利用できるissubset()メソッドの基本的な仕組みと実践的な使い方について詳しく解説します。 issubset()メソッドとは issubset()は、ある集合(セット)のすべての要素が、引数として渡した別の集合に含まれているかどうかを判定するメソッドです。すべての要素が含まれていればブール値のTrueを返し、1つでも含まれていない要素があればFalseを返します。 たとえば、集合Bの全要素が集合Aにも存在する場合、「BはAの部分集合(サブセット)」であると言えます。また、AとBが完全に同じ要素を持つ同一の集合である場合も、互いに部分集合の関