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

Pythonのセットを使った和集合・差集合・積集合の演算をやさしく解説!初心者向けセット演算入門

Pythonのセットを使った和集合・差集合・積集合の演算
Pythonのセットを使った和集合・差集合・積集合の演算

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

生徒

「先生、Pythonのセットって聞いたことあるんですけど、何ができるんですか?」

先生

「Pythonのセットは、重複しないデータをまとめて管理できる便利なデータ型です。特に『和集合』『差集合』『積集合』といった集合演算に使われます。」

生徒

「集合演算って学校でやった気がしますが、どうやってPythonで使うんですか?」

先生

「それでは、Pythonでの和集合・差集合・積集合の使い方を基本からやさしく見ていきましょう!」

1. Pythonのセット(set)とは?

1. Pythonのセット(set)とは?
1. Pythonのセット(set)とは?

Pythonのset(セット)型は、「重複しないデータの集まり」を表すデータ型です。数学でいう集合と同じようなイメージで使えます。

例えば、以下のように重複した値があっても、セットにすると重複が自動的に取り除かれます。


fruits = set(["りんご", "バナナ", "りんご", "みかん"])
print(fruits)

{'バナナ', 'りんご', 'みかん'}

2. 和集合:2つのセットを合わせた集合

2. 和集合:2つのセットを合わせた集合
2. 和集合:2つのセットを合わせた集合

和集合(わしゅうごう)は、2つの集合を合わせたものです。重複する要素は1つだけ残ります。

union()メソッドや|演算子を使って表現します。


a = {"りんご", "バナナ", "みかん"}
b = {"みかん", "ぶどう", "もも"}

# 和集合を作る
result1 = a.union(b)
result2 = a | b

print(result1)
print(result2)

{'ぶどう', 'みかん', 'もも', 'りんご', 'バナナ'}
{'ぶどう', 'みかん', 'もも', 'りんご', 'バナナ'}

どちらの方法でも同じ結果になります。果物が全部集まった感じですね!

3. 差集合:片方だけにある要素を取り出す

3. 差集合:片方だけにある要素を取り出す
3. 差集合:片方だけにある要素を取り出す

差集合(さしゅうごう)は、ある集合から、他の集合に含まれる要素を取り除いたものです。

difference()メソッドや-演算子を使って書きます。


a = {"りんご", "バナナ", "みかん"}
b = {"みかん", "ぶどう", "もも"}

# 差集合を求める
result1 = a.difference(b)
result2 = a - b

print(result1)
print(result2)

{'バナナ', 'りんご'}
{'バナナ', 'りんご'}

a - bの結果は「aにだけあるもの」です。つまりbに含まれない果物だけが表示されます。

4. 積集合:両方に共通する要素だけを取り出す

4. 積集合:両方に共通する要素だけを取り出す
4. 積集合:両方に共通する要素だけを取り出す

積集合(せきしゅうごう)は、両方の集合に共通する要素だけを抽出したものです。

intersection()メソッドや&演算子で表現します。


a = {"りんご", "バナナ", "みかん"}
b = {"みかん", "ぶどう", "もも"}

# 積集合を求める
result1 = a.intersection(b)
result2 = a & b

print(result1)
print(result2)

{'みかん'}
{'みかん'}

このように、両方のセットに「みかん」が共通して入っていたため、それだけが抽出されます。

5. 和集合・差集合・積集合の使いどころ

5. 和集合・差集合・積集合の使いどころ
5. 和集合・差集合・積集合の使いどころ

集合演算は、実際のプログラムでもよく使われます。例えば次のような場面です。

  • ユーザーAとユーザーBが持つタグの共通項を探す(積集合)
  • 新しく追加すべき要素を見つける(差集合)
  • 全体のリストをまとめる(和集合)

「集合演算」と聞くと難しく感じるかもしれませんが、重複のないデータを比較するための便利なツールと覚えておくとよいでしょう。

まとめ

まとめ
まとめ

Pythonのセット演算を振り返ろう

ここまで、Pythonのセット(set)を使った和集合、差集合、積集合について、基礎から順番に学んできました。 セットは「重複しない要素を扱うためのデータ型」であり、リストやタプルとは違った特徴を持っています。 特に、同じ値が自動的に一つにまとめられる点は、データ整理や比較処理を行う場面で非常に役立ちます。

和集合では、二つのセットに含まれるすべての要素を一つにまとめることができました。 unionメソッドやパイプ記号を使うことで、複数の集合を簡単に統合でき、全体像を把握したいときに便利です。 差集合では、ある集合にだけ存在する要素を取り出すことができ、不要なデータを除外したり、新しく追加すべき要素を見つけたりする処理に向いています。 積集合では、両方のセットに共通する要素だけを抽出でき、共通点の分析や一致条件の確認などに活用できます。

これらの集合演算は、数学の集合と同じ考え方で理解できるため、理屈が分かると直感的に使えるようになります。 Pythonのプログラムでは、ユーザー情報、タグ管理、権限チェック、ログ解析など、さまざまな場面でセット演算が活躍します。 初心者のうちは難しく感じるかもしれませんが、実際のコードを書きながら試すことで、自然と理解が深まっていくでしょう。

サンプルプログラムで理解を深める

ここで、和集合、差集合、積集合を一度に確認できるサンプルプログラムを見てみましょう。 これまでの記事と同じ書き方を使っているので、復習として読み進めてみてください。


a = {"りんご", "バナナ", "みかん"}
b = {"みかん", "ぶどう", "もも"}

# 和集合
union_set = a | b

# 差集合
difference_set = a - b

# 積集合
intersection_set = a & b

print(union_set)
print(difference_set)
print(intersection_set)

このように、記号を使うことでコードを簡潔に書ける点も、Pythonのセット演算の魅力です。 プログラムを読む人にとっても意味が分かりやすく、可読性の高いコードになります。 セット演算を使いこなせるようになると、条件分岐やループ処理を減らせるケースも多く、効率的なプログラムを書く力が身につきます。

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

生徒

「最初はセットって何に使うのか分からなかったですけど、和集合や差集合、積集合を知ってから、 データを比べるための便利な道具なんだと分かりました。」

先生

「そうですね。特に重複を気にせずに扱える点は、リストにはない大きな特徴です。 共通しているデータや、片方にしかないデータを簡単に取り出せるのがセットの強みです。」

生徒

「実際のプログラムでも、ユーザーのタグや共通の条件を調べるときに使えそうだと思いました。」

先生

「その通りです。学んだ内容を実際の場面に当てはめて考えられるようになると、理解が一段と深まります。 ぜひ自分なりの例を作って、セット演算を試してみてください。」

生徒

「これからはリストだけでなく、セットも選択肢に入れてプログラムを書いてみます!」

カテゴリの一覧へ
新着記事
New1
Django
Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
New2
Flask
Flask×Flask-SocketIOでチャットアプリを作る流れを初心者向けにやさしく解説
New3
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New4
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.8
Java&Spring記事人気No8
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説