Pythonの集合(set)は、重複しない要素の無順序なコレクションを扱うためのデータ構造です。
集合は、数学における集合と同じように使用でき、ユニオン(和集合)、インターセクション(共通集合)、ディファレンス(差集合)などの集合演算を効率的に行うことができます。
以下に、Pythonの集合の基本操作から応用的な操作までを詳しく解説します。
集合の作成
空の集合の作成
my_set = set()
要素を含む集合の作成
my_set = {1, 2, 3, 4, 5}
リストやタプルから集合を作成
my_list = [1, 2, 3, 4, 5]
my_set = set(my_list)
print(my_set) # 出力: {1, 2, 3, 4, 5}
集合の基本操作
要素の追加
add
メソッドを使用して集合に要素を追加します。
my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # 出力: {1, 2, 3, 4}
複数要素の追加
update
メソッドを使用して集合に複数の要素を追加します。
my_set = {1, 2, 3}
my_set.update([4, 5, 6])
print(my_set) # 出力: {1, 2, 3, 4, 5, 6}
要素の削除
remove
メソッドを使用して集合から要素を削除します。存在しない要素を削除しようとするとエラーが発生します。
my_set = {1, 2, 3, 4, 5}
my_set.remove(3)
print(my_set) # 出力: {1, 2, 4, 5}
要素の削除(要素が存在しない場合でもエラーを発生させたくない場合)
discard
メソッドを使用します。
my_set = {1, 2, 3, 4, 5}
my_set.discard(3)
my_set.discard(10) # エラーは発生しない
print(my_set) # 出力: {1, 2, 4, 5}
任意の要素の削除
pop
メソッドを使用して、任意の要素を削除し、その要素を返します。
my_set = {1, 2, 3, 4, 5}
element = my_set.pop()
print(element)
print(my_set)
全要素の削除
clear
メソッドを使用して、集合の全要素を削除します。
my_set = {1, 2, 3, 4, 5}
my_set.clear()
print(my_set) # 出力: set()
集合の演算
和集合
union
メソッドまたは|
演算子を使用して、2つ以上の集合の和集合を求めます。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1.union(set2)
print(union_set) # 出力: {1, 2, 3, 4, 5}
union_set = set1 | set2
print(union_set) # 出力: {1, 2, 3, 4, 5}
共通集合
intersection
メソッドまたは&
演算子を使用して、2つ以上の集合の共通集合を求めます。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
intersection_set = set1.intersection(set2)
print(intersection_set) # 出力: {3}
intersection_set = set1 & set2
print(intersection_set) # 出力: {3}
差集合
difference
メソッドまたは-
演算子を使用して、2つの集合の差集合を求めます。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
difference_set = set1.difference(set2)
print(difference_set) # 出力: {1, 2}
difference_set = set1 - set2
print(difference_set) # 出力: {1, 2}
対称差集合
symmetric_difference
メソッドまたは^
演算子を使用して、2つの集合の対称差集合を求めます。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
symmetric_difference_set = set1.symmetric_difference(set2)
print(symmetric_difference_set) # 出力: {1, 2, 4, 5}
symmetric_difference_set = set1 ^ set2
print(symmetric_difference_set) # 出力: {1, 2, 4, 5}
集合の比較
部分集合
issubset
メソッドを使用して、ある集合が他の集合の部分集合であるかを確認します。
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}
print(set1.issubset(set2)) # 出力: True
上位集合
issuperset
メソッドを使用して、ある集合が他の集合の上位集合であるかを確認します。
set1 = {1, 2, 3, 4, 5}
set2 = {1, 2, 3}
print(set1.issuperset(set2)) # 出力: True
互いに素
isdisjoint
メソッドを使用して、2つの集合が共通の要素を持たないかを確認します。
set1 = {1, 2, 3}
set2 = {4, 5, 6}
print(set1.isdisjoint(set2)) # 出力: True
応用例
重複の削除
集合を使用してリストから重複を削除します。
my_list = [1, 2, 2, 3, 4, 4, 5]
my_set = set(my_list)
unique_list = list(my_set)
print(unique_list) # 出力: [1, 2, 3, 4, 5]
まとめ
Pythonの集合は、重複しない要素のコレクションを効率的に管理するための強力なツールです。
集合の作成、要素の追加、削除、基本的な集合演算(和集合、共通集合、差集合、対称差集合)、部分集合や上位集合の確認など、さまざまな操作を理解することで、集合を活用したプログラムを効率的に作成することができます。