【Python】setの役割と使い方

Python

本記事では、Pythonのsetについて、役割と使い方をサンプルコードを使って紹介します。

setの役割

Pythonにおけるsetは、一意な要素を持つコレクションです。主に、以下の用途で使用されます。

  • 集合演算:和集合、積集合、差集合、対称差などの集合演算を簡単に行えます。
  • リストやタプルから重複を除去:重複する要素を持たないため、重複の除去に便利です。

setの初期化

setは波括弧{}またはset()関数を使って作成します。空のセットを作成する場合は{}ではなく、set()を使用する必要がある点に注意してください({}と書くと空の辞書(dictionary)を作成してしまいます)。

# 空のsetの作成
empty_set = set()

# 要素を持つsetの作成
fruits = {'apple', 'banana', 'cherry'}

setの操作

要素の追加と削除

  • add()メソッドで要素を追加できます。
  • remove()メソッドで要素を削除できます。要素がセットに含まれていない場合はKeyErrorが発生します。
  • discard()メソッドも要素を削除しますが、要素がセットに含まれていなくてもエラーは発生しません。
fruits.add('orange')  # 'orange'を追加
fruits.remove('banana')  # 'banana'を削除、セットにない場合はエラー
fruits.discard('banana')  # 'banana'を削除、セットにない場合もエラーは発生しない

重複の除去

一意な要素を持つsetの特徴を生かしてリストの重複除去を行うことができます。

#coding: UTF-8
import collections  # collections.Counterを使用するためのimport

# 重複要素を含むリスト
original_list = ['apple', 'banana', 'apple', 'orange', 'banana', 'pear']

# リストの重複要素を除去 ★
unique_list = list(set(original_list))  # setを利用して重複を除去し、リストに戻す

# 重複除去後のリストを表示
for item in unique_list:
    print(item)

集合演算

  • 和集合(演算子 |): 二つのセットの全ての要素を含む新しいセットを返します。
  • 積集合(演算子 &): 二つのセットに共通する要素のみを含む新しいセットを返します。
  • 差集合(演算子 -): 一方のセットには含まれるが、他方には含まれない要素のみを含む新しいセットを返します。
  • 対称差(演算子 ^): 二つのセットのいずれか一方には含まれるが、両方には含まれない要素のみを含む新しいセットを返します。
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

# 和集合
c = a | b  # {1, 2, 3, 4, 5, 6}

# 積集合
d = a & b  # {3, 4}

# 差集合
e = a - b  # {1, 2}

# 対称差
f = a ^ b  # {1, 2, 5, 6}

注意点

  • setは要素の順序を保持しません。要素が追加される順序に依存する操作をする場合は、setではなくリストやタプルを使用する必要があります。
  • setの要素は変更不可能な(immutable)データ型でなければなりません。そのため、リストや他のセットを直接setの要素として持つことはできません。タプルは変更不可能な(immutable)データ型なのでsetの要素として持つことができます。
タイトルとURLをコピーしました