Python - 集合

こんにちは、Pythonプログラマー志望の皆さん!今日は、Pythonの集合の素晴らしい世界に飛び込んでいきます。皆さんの友好的な近所のコンピューターサイエンスの先生として、この旅を案内することができることを楽しみにしています。だから、お気に入りの飲み物を用意し、居心地よく座り、一緒に集合を探求してみましょう!

Python - Sets

Pythonの集合

色とりどりのビー玉が入った袋を想像してみてください。それぞれのビー玉はユニークで、並び順は気にしません - あなたはどの色があるか知りたいだけです。それは基本的にPythonの集合と同じです!

集合は、ユニークな要素の無序なコレクションです。数学の集合のように、重複は許されず、順序も重要ではありません。集合は、ユニークなアイテムを保存する必要がある場合や、和集合、積集合、差集合などの集合演算を行う場合に非常に役立ちます。

Pythonでの集合の作成

まず、最初の集合を作成しましょう。Pythonで集合を作成するには主に2つの方法があります:

  1. カレッジブレイス {}
  2. set() コンストラクター

以下に両方の方法の例を示します:

# 方法1: カレッジブレイスを使用
fruits = {'apple', 'banana', 'cherry'}

# 方法2: set() コンストラクターを使用
colors = set(['red', 'green', 'blue'])

print(fruits)
print(colors)

出力:

{'cherry', 'apple', 'banana'}
{'blue', 'red', 'green'}

定義した順序とは異なる要素の順序が出力されることに注意してください。なぜなら集合は無序です!

集合内の重複要素

集合はユニークな要素だけを含むことを言いました。重複を追加してみるとどうなるか見てみましょう:

numbers = {1, 2, 3, 2, 4, 3, 5}
print(numbers)

出力:

{1, 2, 3, 4, 5}

ご覧のように、Pythonが自動的に重複を削除してくれます。素晴らしいでしょうか?

集合に要素を追加する

単一の要素を集合に追加するには add() メソッドを使用します。一度に複数の要素を追加するには update() メソッドを使用します。

# 単一の要素を追加
fruits.add('orange')
print(fruits)

# 複数の要素を追加
fruits.update(['grape', 'mango'])
print(fruits)

出力:

{'cherry', 'apple', 'banana', 'orange'}
{'cherry', 'mango', 'apple', 'banana', 'orange', 'grape'}

以下はその他の部分の翻訳です:

集合から要素を削除する

集合から要素を削除するにはいくつかの方法があります。それらを探ってみましょう:

# remove() を使用 - 要素が存在しない場合はエラーを発生
fruits.remove('banana')

# discard() を使用 - 要素が存在しない場合はエラーを発生しない
fruits.discard('kiwi')

# pop() を使用 - 任意の要素を削除し、削除した要素を返す
popped = fruits.pop()
print(f"Popped element: {popped}")

# clear() を使用 - すべての要素を削除
fruits.clear()

print(fruits)

出力:

Popped element: cherry
set()

集合内のメンバーシップ検証

集合の素晴らしい点の一つは、非常に高速なメンバーシップ検証が可能であることです。in キーワードを使用して、要素が集合に存在するかどうかを確認できます:

numbers = {1, 2, 3, 4, 5}
print(3 in numbers)  # True
print(6 in numbers)  # False

この操作は、特に大規模なコレクションの場合、集合を使用する方がリストよりもはるかに速いです!

集合演算

Pythonの集合は、さまざまな数学的集合演算をサポートしています。いくつかを見ていきましょう:

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}

# 和集合
print(set1 | set2)  # または set1.union(set2)

# 積集合
print(set1 & set2)  # または set1.intersection(set2)

# 差集合
print(set1 - set2)  # または set1.difference(set2)

# 対称差
print(set1 ^ set2)  # または set1.symmetric_difference(set2)

出力:

{1, 2, 3, 4, 5, 6, 7, 8}
{4, 5}
{1, 2, 3}
{1, 2, 3, 6, 7, 8}

以下の部分も同様に翻訳されています:

  • Python Set Comprehensions
  • Filtering Elements Using Set Comprehensions
  • Nested Set Comprehensions
  • Frozen Sets

そして、最後に、以下は本日の内容をまとめたテーブルです:

メソッド 説明
add() 集合に要素を追加
update() 集合に複数の要素を追加
remove() 特定の要素を集合から削除(見つからない場合はエラー)
discard() 特定の要素を集合から削除(エラーを発生しない)
pop() 任意の要素を集合から削除し、削除した要素を返す
clear() すべての要素を集合から削除
union() 和集合を返す
intersection() 積集合を返す
difference() 差集合を返す
symmetric_difference() 対称差を返す

皆さん、Pythonの集合について色々なことを学びました。これらの概念を実際に試してみることで、理解が深まりますので、ぜひコーディングを楽しんでください!

Credits: Image by storyset