サイトアイコン 【TechGrowUp】

Python開発入門12 Pythonのセット(Set)を解説!ユニークなデータ管理の基本から応用まで

はじめに

Pythonのセット(Set)は、データを管理するための強力なツールです。セットは、重複を許さないデータを効率的に扱うためのデータ構造で、リストやタプルとは異なる特徴を持っています。

この記事では、Pythonのセットについて、基本的な操作方法から応用的な使用例までを解説します。集合演算ユニークなデータの管理、効率的なデータ操作の方法を学びましょう。

セット(Set)とは

セットは、Pythonのデータ型の1つで、次のような特徴があります:

セットの作成と基本操作

A. セットの作成

セットは波括弧({})を使って作成します。

# 空のセット
empty_set = set()

# 要素を持つセット
numbers = {1, 2, 3, 4, 5}
fruits = {"apple", "banana", "cherry"}

print(numbers)  # {1, 2, 3, 4, 5}
print(fruits)   # {"apple", "banana", "cherry"}
注意:空のセットの作成

波括弧のみを使うと辞書(dict)として扱われます。そのため、空のセットを作成する場合はset()を使用します。

empty_set = set()
print(type(empty_set))  # <class 'set'>

B. セットの要素追加

add()を使用

1つの要素をセットに追加します。

fruits = {"apple", "banana"}
fruits.add("cherry")
print(fruits)  # {"apple", "banana", "cherry"}
update()を使用

複数の要素を一度に追加します。

fruits = {"apple", "banana"}
fruits.update(["cherry", "orange"])
print(fruits)  # {"apple", "banana", "cherry", "orange"}

C. セットの要素削除

remove()を使用

指定した要素を削除します。存在しない要素を削除しようとするとエラーが発生します。

fruits = {"apple", "banana", "cherry"}
fruits.remove("banana")
print(fruits)  # {"apple", "cherry"}
discard()を使用

指定した要素を削除しますが、存在しない場合でもエラーにはなりません。

fruits = {"apple", "banana", "cherry"}
fruits.discard("orange")  # エラーは発生しない
print(fruits)  # {"apple", "banana", "cherry"}
pop()を使用

ランダムな要素を削除して返します。

fruits = {"apple", "banana", "cherry"}
removed = fruits.pop()
print(removed)  # "apple"(例)
print(fruits)   # 残りの要素

セットの基本操作

A. 要素の存在確認

特定の要素がセット内に存在するか確認するには、inを使用します。

fruits = {"apple", "banana", "cherry"}
print("apple" in fruits)  # True
print("orange" in fruits)  # False

B. セットの長さを取得

セット内の要素数を取得するには、len()を使用します。

fruits = {"apple", "banana", "cherry"}
print(len(fruits))  # 3

セットの集合演算

セットの特徴を活かすためには、集合演算を理解することが重要です。

A. 和集合(Union)

2つのセットのすべての要素を含む新しいセットを作成します。

set1 = {1, 2, 3}
set2 = {3, 4, 5}

result = set1.union(set2)
print(result)  # {1, 2, 3, 4, 5}

または、|演算子を使用することもできます。

result = set1 | set2
print(result)  # {1, 2, 3, 4, 5}

B. 積集合(Intersection)

2つのセットに共通する要素を含む新しいセットを作成します。

set1 = {1, 2, 3}
set2 = {3, 4, 5}

result = set1.intersection(set2)
print(result)  # {3}

または、&演算子を使用できます。

result = set1 & set2
print(result)  # {3}

C. 差集合(Difference)

1つ目のセットに含まれるが、2つ目のセットに含まれない要素を取得します。

set1 = {1, 2, 3}
set2 = {3, 4, 5}

result = set1.difference(set2)
print(result)  # {1, 2}

または、-演算子を使用します。

result = set1 - set2
print(result)  # {1, 2}

D. 対称差集合(Symmetric Difference)

2つのセットのいずれか一方に含まれるが、両方には含まれない要素を取得します。

set1 = {1, 2, 3}
set2 = {3, 4, 5}

result = set1.symmetric_difference(set2)
print(result)  # {1, 2, 4, 5}

または、^演算子を使用します。

result = set1 ^ set2
print(result)  # {1, 2, 4, 5}

応用例:セットの実践的な活用

A. リストから重複を削除

セットを使用してリスト内の重複を簡単に削除できます。

numbers = [1, 2, 2, 3, 4, 4, 5]
unique_numbers = list(set(numbers))
print(unique_numbers)  # [1, 2, 3, 4, 5]

B. データの共通要素を確認

2つのリストの共通要素を確認する場合に便利です。

list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]

common_elements = set(list1) & set(list2)
print(common_elements)  # {3, 4}

まとめ

Pythonのセットは、重複のないデータを管理し、効率的な集合演算を行うための非常に便利なデータ構造です。本記事では、セットの基本操作から応用的な活用方法までを解説しました。リストやタプルと比較しながら、適切な場面でセットを使い分けていきましょう!

モバイルバージョンを終了