カテゴリ: Python 更新日: 2025/12/30

Pythonのセットの比較演算(issubset() / issuperset() の使い方)をやさしく解説!初心者でもわかるセット比較

Pythonのセットの比較演算(issubset() / issuperset() の使い方)
Pythonのセットの比較演算(issubset() / issuperset() の使い方)

先生と生徒の会話形式で理解しよう

生徒

「先生、Pythonのセットで『あるセットが別のセットに全部含まれているか』を調べる方法はありますか?」

先生

「はい、それはissubset()メソッドを使います。これは『部分集合かどうか』を調べるためのものです。」

生徒

「逆に『あるセットが別のセットを全部含んでいるか』を調べる方法は?」

先生

「それはissuperset()メソッドを使います。『上位集合かどうか』を調べるメソッドです。順番に説明しましょう。」

1. issubset()とは?部分集合の判定

1. issubset()とは?部分集合の判定
1. issubset()とは?部分集合の判定

issubset()メソッドは「あるセットのすべての要素が、別のセットに含まれているか」を調べます。たとえば、友達グループAのメンバー全員が、友達グループBにもいる場合、AはBの部分集合です。


a = {1, 2, 3}
b = {1, 2, 3, 4, 5}

print(a.issubset(b))  # True
print(b.issubset(a))  # False

True
False

上の例では、セット(a)はセット(b)の中に全て含まれているため、Trueとなります。逆は含まれていないのでFalseです。

2. issuperset()とは?上位集合の判定

2. issuperset()とは?上位集合の判定
2. issuperset()とは?上位集合の判定

issuperset()メソッドは「あるセットが、別のセットのすべての要素を含んでいるか」を調べます。つまり、セットが別のセットを丸ごと内包しているかを調べる時に使います。


a = {1, 2, 3, 4, 5}
b = {2, 3}

print(a.issuperset(b))  # True
print(b.issuperset(a))  # False

True
False

セット(a)はセット(b)のすべての要素を含んでいるのでTrueです。逆は含んでいないのでFalseとなります。

3. 例えでわかるissubset()とissuperset()

3. 例えでわかるissubset()とissuperset()
3. 例えでわかるissubset()とissuperset()

集合のイメージは「箱」に例えられます。
issubset()は「小さい箱が大きい箱の中にすっぽり入っているか?」を聞いているのに対し、
issuperset()は「大きい箱が小さい箱を丸ごと包んでいるか?」を確認しています。

例えば、
「好きな果物セットA」と「持っている果物セットB」で考えてみましょう。
好きな果物Aが全部持っている果物Bに含まれていれば、好きな果物は持っている果物の部分集合です。

4. issubset()とissuperset()の戻り値は?

4. issubset()とissuperset()の戻り値は?
4. issubset()とissuperset()の戻り値は?

どちらのメソッドも、結果は真偽値(TrueFalse)で返します。
条件を満たせばTrue、満たさなければFalseとなります。

プログラミングで「条件が合っているかどうか」を判定する基本的な方法の一つです。

5. セットの比較演算で気をつけること

5. セットの比較演算で気をつけること
5. セットの比較演算で気をつけること

セットは順序(並び)がなく、重複しない特徴があります。そのため、issubset()issuperset()は「要素の含み具合」だけを調べます。
順序は気にしません。

また、空のセットはどのセットにも部分集合として含まれるので、set()はどんなセットの部分集合としてもTrueとなります。

6. セットの比較演算の便利な使い方

6. セットの比較演算の便利な使い方
6. セットの比較演算の便利な使い方

セットの比較演算は、例えば以下のような場面で役立ちます。
・ユーザーの持つ権限が必要な権限を満たしているかのチェック
・買い物リストがすでに持っているものに含まれているか確認
・データの重複や包含関係の検証

Pythonのセットはこのように、比較演算をシンプルに書けるので便利です。

まとめ

まとめ
まとめ

今回の記事では、Pythonのセット(set)に用意されている比較演算メソッドである issubset()issuperset()について、基本から丁寧に確認してきました。 セットは「重複しない要素の集まり」という特徴を持つデータ型で、要素の順番を持たない点が大きな特徴です。 そのため、リストやタプルとは違い、「含まれているかどうか」「すべて揃っているか」といった 集合としての関係性を調べる処理がとても得意です。

issubset()は、「このセットの中身は、すべて別のセットに含まれているか?」を調べるためのメソッドでした。 部分集合かどうかを判定する場面で使われ、権限チェックや条件判定など、実務でもよく登場します。 一方でissuperset()は、「このセットは、別のセットを丸ごと含んでいるか?」を確認するメソッドで、 上位集合かどうかを調べたいときに役立ちます。 この2つは表裏一体の関係にあり、どちらも真偽値(True / False)を返すため、 if文などの条件分岐と非常に相性が良いのもポイントです。

また、セットの比較では順番は一切関係ないことも重要でした。 要素が同じであれば、並び順が違っていても結果は変わりません。 さらに、空のセットはすべてのセットに含まれるという集合のルールも、 プログラムを書く上で知っておくと混乱を防げます。 こうした集合の考え方を理解しておくことで、Pythonのセット操作が一気に扱いやすくなります。

セット比較の確認用サンプルプログラム

ここで、記事内容を振り返るためのシンプルなサンプルをもう一度確認してみましょう。 セットの包含関係をチェックする基本的な書き方です。


required = {"read", "write"}
user_permissions = {"read", "write", "delete"}

# ユーザーの権限が必要条件を満たしているか
print(required.issubset(user_permissions))

# 管理者権限かどうかのチェック
print(user_permissions.issuperset(required))

True
True

このように、issubset()issuperset()を使うと、 複雑なループや条件分岐を書かなくても、 「含まれているか」「満たしているか」を一行で安全に判定できます。 セットの比較演算は、コードを短く、読みやすく保つための強力な武器になります。

先生と生徒の振り返り会話

生徒

「issubset()とissuperset()って、最初は名前だけ見ると難しそうでしたけど、 実際は『全部含まれているか』を調べているだけなんですね。」

先生

「その通りです。集合の考え方を知っていれば、とても直感的なメソッドなんですよ。 if文と組み合わせると、条件チェックが一気に簡単になります。」

生徒

「順番を気にしなくていいのも便利ですね。 リストだと同じことをやろうとすると、結構大変そうです。」

先生

「そうですね。セットは『存在しているかどうか』を扱うのが得意です。 権限管理やチェック処理では特に活躍しますよ。」

生徒

「これなら、自分のプログラムでも条件判定をすっきり書けそうです。 セットの比較演算、しっかり使ってみます!」

先生

「ぜひ使ってみてください。今回の内容を理解できたなら、 Pythonのデータ構造の扱い方が一段レベルアップしていますよ。」

カテゴリの一覧へ
新着記事
New1
Django
Djangoバリデーション入門|フォームとモデルの入力チェック基本をやさしく理解しよう
New2
Django
Djangoテンプレートの変数展開まとめ|初心者向けにわかりやすく解説
New3
Django
Django ModelFormの使い方完全ガイド!初心者でもわかる新規登録フォーム作成
New4
Django
Djangoテンプレートの使い方を完全解説!初心者でもわかるタグ・フィルタ入門
人気記事
No.1
Java&Spring記事人気No1
Python
PythonでNoSQL操作!エラーハンドリングを初心者向けに徹底解説
No.2
Java&Spring記事人気No2
Flask
Flaskで多言語対応のログメッセージを出力する方法!Python初心者向けガイド
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonのSQLAlchemy使い方入門!初心者でもわかるインストールと初期設定
No.5
Java&Spring記事人気No5
Python
PythonのSQLAlchemyでデータベース操作!モデルクラスでテーブル定義する方法を徹底解説
No.6
Java&Spring記事人気No6
Flask
FlaskでJSONレスポンスを多言語化!API設計の基本を初心者向けに解説
No.7
Java&Spring記事人気No7
Python
PythonでCassandraに接続する方法を完全ガイド!cassandra-driverの使い方
No.8
Java&Spring記事人気No8
Python
PythonでREST APIを作る方法!初心者向けFastAPI入門