【Python入門】isdisjoint()関数の使い方を徹底解説!集合の共通要素を判定する方法
本記事では、Pythonのset(集合)型で使えるisdisjoint()関数の使い方について詳しく解説します。この関数は、引数として渡された2つの集合の間に共通する要素が存在するかどうかを判定します。共通要素が1つでも見つかった場合は False を返し、まったく存在しなければ True を返します。
isdisjoint()関数は、set型だけでなく、リスト・タプル・辞書などのイテラブルも引数として受け取ることができます。これらの型は、Pythonインタープリタによって暗黙的にset型へ変換されたうえで比較されます。
構文
<set 1>.isdisjoint(<set 2>)
戻り値
ブール値(True / False)
- True:2つの集合間に共通要素が存在しない場合
- False:2つの集合間に共通要素が存在する場合
それでは、実際の実装例を見ていきましょう。
サンプルコード①:set型同士の比較
# サンプル集合の宣言
set_1 = {'t','u','t','o','r','i','a','l'}
set_2 = {'p','o','i','n','t'}
set_3 = {'p','y'}
# 2つの集合が互いに素(disjoint)かどうかを確認
print("set1 and set2 are disjoint?", set_1.isdisjoint(set_2))
print("set2 and set3 are disjoint?", set_2.isdisjoint(set_3))
print("set1 and set3 are disjoint?", set_1.isdisjoint(set_3))出力結果
set1 and set2 are disjoint? False set2 and set3 are disjoint? False set1 and set3 are disjoint? True
解説
set_1 と set_2 の間には 't' や 'o'、'i' といった共通要素が存在するため、ブール値 False が出力されます。set_2 と set_3 の比較も同様に、共通要素 'p' が存在するため False となります。一方、set_1 と set_3 の比較では共通要素が一切見つからないため、True が出力されます。
続いて、set型以外のイテラブルを引数に渡す例を見てみましょう。
注意: レシーバ側(ドットの左側)のオブジェクトは必ずset型である必要があります。これは、インタープリタに「集合同士の比較である」と認識させるためです。一方、引数側は任意のイテラブル型でよく、内部で自動的にset型へ変換されます。
サンプルコード②:set以外のイテラブルとの比較
# サンプルイテラブルの宣言
set_1 = {'t','u','t','o','r','i','a','l'} # set型
set_2 = ('p','o','i','n','t') # タプル
set_3 = {'p':'y'} # 辞書
set_4 = ['t','u','t','o','r','i','a','l'] # リスト
# 2つの集合が互いに素かどうかを確認
print("set1 and set2 are disjoint?", set_1.isdisjoint(set_2))
print("set1 and set3 are disjoint?", set_1.isdisjoint(set_3))
print("set1 and set4 are disjoint?", set_1.isdisjoint(set_4))出力結果
set1 and set2 are disjoint? False set1 and set3 are disjoint? True set1 and set4 are disjoint? False
この例でも、レシーバ側の set_1 と各引数(タプル・辞書・リスト)との間で共通要素の有無が自動的に判定され、正しい結果が出力されています。タプルやリストはその要素が、辞書の場合はキーがset型へ変換されて比較される点に注目してください。
まとめ
本記事では、Pythonのisdisjoint()関数の基本的な使い方と、set型以外のイテラブル(リスト・タプル・辞書)を引数として渡す方法について学びました。2つの集合が「互いに素」=共通要素を持たない状態かどうかをシンプルに判定できるため、データの重複チェックや条件分岐など、さまざまな場面で活用できる便利なメソッドです。
-
Pythonのissubset()関数とは?部分集合の判定方法を実例付きで解説
本記事では、Python標準ライブラリに用意されているissubset()関数の仕組みと使い方について詳しく解説します。 issubset()メソッドは、あるセット(集合)のすべての要素が、引数として渡した別のセットにも含まれている場合にブール値のTrueを返し、1つでも含まれていない要素があればFalseを返します。 下の図では、BはAの部分集合です。もしAとBが同一のセットであれば、両者は互いに部分集合の関係にあるといえます。つまり、両方のセットがまったく同じ要素を持っているということを意味します。 構文 <set 1>.issubset(<set 2>) 戻り値
-
Pythonのintersection()関数とは?集合の共通要素(積集合)を求める方法
この記事では、Pythonのセット(集合)に対して実行できるintersection()関数について詳しく解説します。数学における「積集合(インターセクション)」とは、2つの集合から共通する要素を見つけ出すことを指します。構文<セット名>.intersection(<セットa1>, <セットa2>, …)戻り値引数として渡されたすべての集合に共通する要素(積集合)が、新しいセットとして返されます。使用例set_1 = {t,u,t,o,r,i,a,l} set_2 = {p,o,i,n,t} set_3 = {t,u,t} # 2つの集合の積集合 print