0Pricing
Python Academy · レッスン

集合と集合演算

集合を作成し、和集合、積集合、差集合を扱います。

「集合と集合演算」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。

概要

集合は、ハッシュ可能で重複のない要素からなる順序なしのコレクションです。要素の存在確認や、数学的な集合演算に適するよう最適化されています。

集合の作成

s = {1, 2, 3} または s = set([1, 2, 2, 3]) とします。重複は自動的に削除されます。{} は空の集合ではなく、空の DICT を作成します。
s = {1, 2, 2, 3}
print(s)  # {1, 2, 3}
empty = set()
print(type(empty))

add() と discard()

s.add(x) は要素を追加します。s.discard(x) は要素をエラーなしで削除します(存在しなくてもエラーになりません)。s.remove(x) は要素が存在しない場合に KeyError を発生させます。
s = {1, 2, 3}
s.add(4)
s.discard(9)  # safe
print(s)

要素の存在確認

集合では x in s の計算量が O(1) であるのに対し、リストでは O(n) です。高速な存在確認だけが必要な場合は、常に集合を優先してください。
s = {1, 2, 3}
print(2 in s)
print(9 in s)

和集合 |

s1 | s2 は、どちらか一方の集合に含まれる要素を返します。s1.union(s2) も同じ意味です。
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b)

積集合 &

s1 & s2 は、両方の集合に含まれる要素を返します。s1.intersection(s2) も同じ意味です。
a = {1, 2, 3}
b = {2, 3, 4}
print(a & b)

差集合 -

s1 - s2 は、s1 には含まれるが s2 には含まれない要素を返します。s1.difference(s2) も同じ意味です。
a = {1, 2, 3}
b = {2, 3, 4}
print(a - b)

対称差 ^

s1 ^ s2 は、どちらか一方には含まれるが、両方には含まれない要素を返します。2つの集合の変更点を見つけるのに便利です。
a = {1, 2, 3}
b = {2, 3, 4}
print(a ^ b)

部分集合と上位集合

s1 <= s2 は、s1 が s2 の部分集合かどうかを確認します。s1 >= s2 は上位集合かどうかを確認します。s1 < s2 は真部分集合かどうかを確認します。
a = {1, 2}
b = {1, 2, 3}
print(a <= b)
print(b >= a)

frozenset

frozenset は不変の集合です。dict のキーや、別の集合の要素として使えます。
fs = frozenset([1, 2, 3])
d = {fs: 'value'}
print(d[fs])

集合内包表記

{x*2 for x in range(5)} は、内包表記の構文を使って集合を作成します。重複は自動的に削除されます。
evens = {x*2 for x in range(5)}
print(evens)

確認問題

Python の集合 s に対する x in s の時間計算量は何ですか。

まとめ

集合は順序がなく、要素が一意で、存在確認を O(1) で行えます。演算子には |(和集合)、&(積集合)、-(差集合)、^(対称差)があります。不変の集合には frozenset を使います。

次へ進む

よくできました。次のレッスンに進み、引き続きスキルを身につけていきましょう。

よくある質問

「集合と集合演算」レッスンは無料ですか?

はい。「集合と集合演算」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。

「集合と集合演算」で何を学びますか?

集合を作成し、和集合、積集合、差集合を扱います。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Python Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「集合と集合演算」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPython Academyレッスンでコードを書いて実行できますか?

はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 辞書の基礎
  2. 辞書のメソッド
  3. 集合と集合演算
  4. 辞書内包表記
← Python Academyに戻る