<一覧に戻る

セットの演算(和・積・差)

Pythonでデータを扱うとき、重複しない要素の集合を操作する必要がある場面は多くあります。 そのときに便利なのが、セット(set)です。セットを使うと、複数のデータをまとめて比較したり、重複を自動的に取り除いたりできます。

前回は、セットの基本操作(追加・削除・結合) を学びました。 今回はさらにステップアップし、集合演算と呼ばれる「和・積・差」について解説します。

セットの演算とは?

セットの演算には、以下の3つがあります。

  1. 和(Union): 2つのセットの全ての要素を含む新しいセットを作成します。
  2. 積(Intersection): 2つのセットに共通する要素だけを含む新しいセットを作成します。
  3. 差(Difference): 1つのセットから、もう1つのセットに含まれる要素を除いた新しいセットを作成します。

では、これらの演算をサンプルコードを通じて見ていきましょう。

和(Union)― 2つの集合をまとめる

まずは和の演算です。 2つの集合を結合し、両方の集合に含まれるすべての要素を一つにまとめます。重複要素は自動的に取り除かれます。

Pythonでは、union() メソッド、または | 演算子を使って実現できます。

# セットの定義
set_a = {1, 2, 3, 4}
set_b = {3, 4, 5, 6}

# 和の計算
set_union = set_a.union(set_b)
# または
set_union_operator = set_a | set_b

print("和(Union): ", set_union)
print("和(Union) using operator: ", set_union_operator)

ここでは、set_a と set_b という2つのセットを作成し、union() と | を使って結合しました。 結果は {1, 2, 3, 4, 5, 6} となり、両方のセットに含まれるすべての要素を重複なしでまとめています。

積(Intersection)― 共通する要素だけを取り出す

次に積の演算です。 2つの集合に共通する要素だけを新しいセットにする操作です。

Pythonでは、intersection() メソッド、または & 演算子を使います。

# セットの定義
set_a = {1, 2, 3, 4}
set_b = {3, 4, 5, 6}

# 積の計算
set_intersection = set_a.intersection(set_b)
# または
set_intersection_operator = set_a & set_b

print("積(Intersection): ", set_intersection)
print("積(Intersection) using operator: ", set_intersection_operator)

set_a と set_b の両方に共通する要素は 3 と 4 なので、結果は {3, 4} となります。 こうした共通部分の抽出は、データの突合やフィルタリングでよく使われます。

差(Difference)― 一方にしかない要素を取り出す

最後はです。 ある集合から、もう一方の集合に含まれる要素を取り除くことで、片方にしか存在しない要素を抽出します。

Pythonでは、difference() メソッド、または - 演算子を使います。

# セットの定義
set_a = {1, 2, 3, 4}
set_b = {3, 4, 5, 6}

# 差の計算
set_difference = set_a.difference(set_b)
# または演算子を使う方法
set_difference_operator = set_a - set_b

print("差(Difference): ", set_difference)
print("差(Difference) using operator: ", set_difference_operator)

set_a にしかない要素は 1 と 2 なので、結果は {1, 2} となります。 逆に set_b にしかない要素を求めたい場合は、set_b - set_a とすればOKです。

まとめ

今回は、Pythonのセットでできる3つの演算を学びました。

  • 和(Union):2つの集合を結合 → union() または |
  • 積(Intersection):共通部分を抽出 → intersection() または &
  • 差(Difference):片方だけの要素を取得 → difference() または -

これらの演算は、データの比較・分析・フィルタリングなど、幅広い場面で活用できます。

出力結果: