Pythonのセットを使った和集合・差集合・積集合の演算をやさしく解説!初心者向けセット演算入門
生徒
「先生、Pythonのセットって聞いたことあるんですけど、何ができるんですか?」
先生
「Pythonのセットは、重複しないデータをまとめて管理できる便利なデータ型です。特に『和集合』『差集合』『積集合』といった集合演算に使われます。」
生徒
「集合演算って学校でやった気がしますが、どうやってPythonで使うんですか?」
先生
「それでは、Pythonでの和集合・差集合・積集合の使い方を基本からやさしく見ていきましょう!」
1. Pythonのセット(set)とは?
Pythonのset(セット)型は、「重複しないデータの集まり」を表すデータ型です。数学でいう集合と同じようなイメージで使えます。
例えば、以下のように重複した値があっても、セットにすると重複が自動的に取り除かれます。
fruits = set(["りんご", "バナナ", "りんご", "みかん"])
print(fruits)
{'バナナ', 'りんご', 'みかん'}
2. 和集合:2つのセットを合わせた集合
和集合(わしゅうごう)は、2つの集合を合わせたものです。重複する要素は1つだけ残ります。
union()メソッドや|演算子を使って表現します。
a = {"りんご", "バナナ", "みかん"}
b = {"みかん", "ぶどう", "もも"}
# 和集合を作る
result1 = a.union(b)
result2 = a | b
print(result1)
print(result2)
{'ぶどう', 'みかん', 'もも', 'りんご', 'バナナ'}
{'ぶどう', 'みかん', 'もも', 'りんご', 'バナナ'}
どちらの方法でも同じ結果になります。果物が全部集まった感じですね!
3. 差集合:片方だけにある要素を取り出す
差集合(さしゅうごう)は、ある集合から、他の集合に含まれる要素を取り除いたものです。
difference()メソッドや-演算子を使って書きます。
a = {"りんご", "バナナ", "みかん"}
b = {"みかん", "ぶどう", "もも"}
# 差集合を求める
result1 = a.difference(b)
result2 = a - b
print(result1)
print(result2)
{'バナナ', 'りんご'}
{'バナナ', 'りんご'}
a - bの結果は「aにだけあるもの」です。つまりbに含まれない果物だけが表示されます。
4. 積集合:両方に共通する要素だけを取り出す
積集合(せきしゅうごう)は、両方の集合に共通する要素だけを抽出したものです。
intersection()メソッドや&演算子で表現します。
a = {"りんご", "バナナ", "みかん"}
b = {"みかん", "ぶどう", "もも"}
# 積集合を求める
result1 = a.intersection(b)
result2 = a & b
print(result1)
print(result2)
{'みかん'}
{'みかん'}
このように、両方のセットに「みかん」が共通して入っていたため、それだけが抽出されます。
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のセット演算の魅力です。 プログラムを読む人にとっても意味が分かりやすく、可読性の高いコードになります。 セット演算を使いこなせるようになると、条件分岐やループ処理を減らせるケースも多く、効率的なプログラムを書く力が身につきます。
生徒
「最初はセットって何に使うのか分からなかったですけど、和集合や差集合、積集合を知ってから、 データを比べるための便利な道具なんだと分かりました。」
先生
「そうですね。特に重複を気にせずに扱える点は、リストにはない大きな特徴です。 共通しているデータや、片方にしかないデータを簡単に取り出せるのがセットの強みです。」
生徒
「実際のプログラムでも、ユーザーのタグや共通の条件を調べるときに使えそうだと思いました。」
先生
「その通りです。学んだ内容を実際の場面に当てはめて考えられるようになると、理解が一段と深まります。 ぜひ自分なりの例を作って、セット演算を試してみてください。」
生徒
「これからはリストだけでなく、セットも選択肢に入れてプログラムを書いてみます!」