Pythonでデータを扱うとき、重複しない要素の集合を操作する必要がある場面は多くあります。 そのときに便利なのが、セット(set)です。セットを使うと、複数のデータをまとめて比較したり、重複を自動的に取り除いたりできます。
前回は、セットの基本操作(追加・削除・結合) を学びました。 今回はさらにステップアップし、集合演算と呼ばれる「和・積・差」について解説します。
セットの演算には、以下の3つがあります。
では、これらの演算をサンプルコードを通じて見ていきましょう。
まずは和の演算です。 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} となり、両方のセットに含まれるすべての要素を重複なしでまとめています。
次に積の演算です。 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} となります。 こうした共通部分の抽出は、データの突合やフィルタリングでよく使われます。
最後は差です。 ある集合から、もう一方の集合に含まれる要素を取り除くことで、片方にしか存在しない要素を抽出します。
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つの演算を学びました。
これらの演算は、データの比較・分析・フィルタリングなど、幅広い場面で活用できます。