Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのissubset()関数とは?部分集合の判定方法を実例付きで解説

本記事では、Python標準ライブラリに用意されているissubset()関数の仕組みと使い方について詳しく解説します。

issubset()メソッドは、あるセット(集合)のすべての要素が、引数として渡した別のセットにも含まれている場合にブール値のTrueを返し、1つでも含まれていない要素があればFalseを返します。

下の図では、BはAの部分集合です。もしAとBが同一のセットであれば、両者は互いに部分集合の関係にあるといえます。つまり、両方のセットがまったく同じ要素を持っているということを意味します。

Pythonのissubset()関数とは?部分集合の判定方法を実例付きで解説

構文

<set 1>.issubset(<set 2>)

戻り値

boolean True / False

それでは、実際のコード例を見ながら概念を理解していきましょう。

例1:セット同士の比較

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

解説

最初のprint文では、「Bのすべての要素がAに含まれているか」がチェックされ、結果はTrueと評価されます。一方、次の行ではBの要素がCにはすべて含まれていないため、Falseが出力されます。

3つ目の処理では、型変換(キャスト)を利用して2つのセットから新しいセットを作成しています。これによりCの全要素がAに含まれる状態になり、C.issubset(A)はTrueを返します。

次に、引数としてセット以外のイテラブルを渡した場合にどのような挙動になるのかを見てみましょう。

例2:リストやタプルとの比較

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

解説

この例では、リスト、タプルといったさまざまなイテラブルをissubset()関数の引数に渡しています。これらの型は必要に応じてセット型へと暗黙的に変換されるため、期待どおりの結果が得られます。

ただし注意点もあります。issubset()を呼び出す側(左辺)のオブジェクトは、必ずセット型である必要があります。インタープリターが「この比較は2つのセット間で行われるものだ」と正しく認識できるようにするためです。一方、引数(右辺)には任意のイテラブルを指定できます。

まとめ

本記事では、Pythonのissubset()関数を使って部分集合を判定する方法を学びました。セット同士だけでなく、リストやタプルなどのイテラブルも引数として利用できる点を押さえておくと、データの包含関係をチェックするさまざまな場面で役立ちます。

  1. Python Tkinterでイベントを関数にバインドする方法【キーボード・マウス対応】

    Pythonの標準GUIライブラリであるTkinterは、デスクトップアプリケーション開発に広く利用されています。GUIプログラミングにおいて重要な概念の一つが「バインディング(Binding)」です。これは、ウィジェットやウィンドウに対してイベント(キー入力やマウス操作など)を関数やメソッドに関連付け、そのイベントが発生したタイミングで特定の関数が自動的に実行される仕組みです。本記事では、Tkinterにおけるバインディングの基本として、キーボードイベントとマウスクリックイベントを関数に紐付ける方法を具体例とともに解説します。キーボードイベントのバインドまずは、キーボードの任意のキーが押され

  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