Python - 集合演習

こんにちは、未来のPythonの魔法使いたち!今日は、Pythonの集合の魔法の世界に飛び込もうと思います。まだコードを書いたことがないでしょうが、心配しないでください – この興奮な旅にあなたの友好的なガイドとして付いていきます。このチュートリアルの終わりまでには、プロのように集合を呼び起こすことができるようになる予定です!

Python - Set Exercises

集合とは?

演習に飛び込む前に、Pythonでの集合について簡単に理解しましょう。あなたがビー玉の袋を持っているとしましょうが、袋には同じビー玉が一度しか入らないとします。それは基本的にPythonの集合と同じです – 独一无二のアイテムのコレクションです。

集合は順序を持たないので、アイテムには特定の位置がありません。また、変更可能ですので、アイテムを追加または削除することができます。しかし、アイテム自体は不変(数や文字列のように、リストではない)でなければなりません。

それでは、袖を roll upしてコーディングを始めましょう!

Python集合演習1:集合の作成と操作

集合の作成

まず、シンプルな集合を作成しましょう:

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

このコードを実行すると、以下のように表示されます:

{'cherry', 'banana', 'apple'}

入力とは異なる順序で表示されたことに気づきましたか?それは集合は順序を持たないからです!

集合にアイテムを追加する

さらに、いくつかの果物を集合に追加しましょう:

fruits.add("dragonfruit")
print(fruits)

fruits.update(["elderberry", "fig"])
print(fruits)

出力:

{'cherry', 'banana', 'apple', 'dragonfruit'}
{'fig', 'cherry', 'banana', 'elderberry', 'apple', 'dragonfruit'}

add()を単一のアイテムに、update()を複数のアイテムに使用したことに気づきましたか?それは一つのビー玉を袋に入れるのと、手一杯に入れるのと比べてみてください!

集合からアイテムを削除する

いくつかの果物を削除しましょう:

fruits.remove("banana")
print(fruits)

fruits.discard("grape")  # "grape"が集合にない場合でもエラーは発生しません
print(fruits)

出力:

{'fig', 'cherry', 'elderberry', 'apple', 'dragonfruit'}
{'fig', 'cherry', 'elderberry', 'apple', 'dragonfruit'}

remove()はアイテムが存在しない場合にエラーを発生させますが、discard()はエラーを発生させません。それは慎重に特定のビー玉を選んで取り除くのと、気軽に取り除くように見えます。

Python集合演習2:集合演算

基本的な操作を理解したので、複数の集合で遊んでみましょう!

集合の和

あなたと友達がビー玉の袋をそれぞれ持っているとしましょう。和は、あなたが一緒に持っているすべてのユニークなビー玉です。

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
union_set = set1.union(set2)
print(union_set)

出力:

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

集合の交差

交差は、あなたと友達が共通して持っているビー玉です。

intersection_set = set1.intersection(set2)
print(intersection_set)

出力:

{4, 5}

集合の差

差は、あなたが持っているが友達が持っていないビー玉です。

difference_set = set1.difference(set2)
print(difference_set)

出力:

{1, 2, 3}

Python集合演習3:高度な集合演算

レベルアップの準備はできましたか?もっと高度な操作に挑戦しましょう!

対称差

これは、どちらかの集合にあるが両方にはないすべてのビー玉を返します。

symmetric_difference = set1.symmetric_difference(set2)
print(symmetric_difference)

出力:

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

サブセットとスーパーセット

ある集合が別の集合に含まれているか確認しましょう:

set3 = {1, 2, 3}
print(set3.issubset(set1))  # set3はset1のサブセットですか?
print(set1.issuperset(set3))  # set1はset3のスーパーセットですか?

出力:

True
True

それは、あなたのビー玉が友達のより大きなコレクションにすべて含まれているかどうかを確認するようなものです!

凍結集合

時々、変更できない集合が必要になります。そんなときには凍結集合を使います:

frozen_fruits = frozenset(["apple", "banana", "cherry"])
print(frozen_fruits)

# 以下はエラーを発生させます:
# frozen_fruits.add("dragonfruit")

出力:

frozenset({'cherry', 'banana', 'apple'})

凍結集合は、ビー玉の袋が氷に密封されているようなものです – 見ることはできますが触ることはできません!

集合メソッドのまとめ

ここに、学んだ集合メソッドの便利な表を示します:

メソッド 説明
add() 集合に要素を追加
update() 他の集合やイテラブルからの要素で集合を更新
remove() 指定された要素を削除(見つからない場合はエラー)
discard() 指定された要素を削除(見つからない場合はエラーなし)
union() 和集合を返す
intersection() 交差集合を返す
difference() 差集合を返す
symmetric_difference() どちらかの集合にあるが両方にはない要素の集合を返す
issubset() ある集合が別の集合のサブセットかどうかを確認
issuperset() ある集合が別の集合のスーパーセットかどうかを確認

それで、皆さんもPythonの集合を使ったスキルがレベルアップしました!覚えるというものは実践でないとですので、これらの概念をずっと遊んでいきましょう。知らずに、Pythonの魔法使いとして集合を操作することができるようになる日が近いでしょう!

Credits: Image by storyset