Python セット: 演算、メソッド、および集合理論

マスターセットはPythonで作成します。一意の値を保存し、交差、結合、差分を実行する方法を学び、ハッシュのパフォーマンス上の利点を理解します。

エディターで試してみる

概要

Set は、Python の一意の要素の順序付けされていないコレクションです。セットはハッシュ テーブルに基づいて構築されているため、メンバーシップ テスト、つまり特定の要素がコレクション内にあるかどうかを判断するために高度に最適化されています。項目がリスト内にあるかどうかをチェックするにはすべての項目をスキャンする必要がありますが (「O(N)」 操作)、セット内のメンバーシップのチェックは定数時間「O(1)」で実行されます。これにより、セットは重複の削除や大量のデータのフィルタリングに対して非常に強力になります。

セットは、値 (コロンなし) を含む中かっこ `{}` を使用するか、組み込みの `set()` コンストラクターを使用して初期化されます。中括弧は辞書にも使用されるため、空の中括弧 `{}` を記述すると空の辞書が初期化されることに注意してください。空のセットを初期化するには、`set()` を使用する必要があります。セット内の要素はハッシュ可能かつ不変である必要があります。つまり、数値、文字列、タプルは格納できますが、リストや辞書をセット内に格納することはできません。

基本的な追加および削除メソッドを超えて、Python セットは数学的な集合理論による演算をネイティブにサポートします。これには、コレクションをマージするための結合 (`|` または `.union()`)、共通の要素を見つけるための交差 (`&` または `.intersection()`)、1 つのコレクションに固有の要素を見つけるための差異 (`-` または `.difference()`)、および両方ではなくいずれかのセットの項目を取得するための対称差分 (`^`) が含まれます。マスタリング セットを使用すると、複雑なグループ化の問題を、クリーンでパフォーマンスが高く読みやすいコードで解決できます。

コードと実行の出力

リストから重複を削除し、数学的な集合演算を実行します。

# Removing duplicates
roles_list = ["admin", "user", "editor", "admin", "user"]
# Sort the set to guarantee deterministic printed output
unique_roles = sorted(list(set(roles_list)))
print(f"Unique roles: {unique_roles}")

# Set operations
dev_skills = {"python", "javascript", "sql"}
ops_skills = {"sql", "docker", "kubernetes"}

# Union and Intersection (sorted for deterministic output)
all_skills = sorted(list(dev_skills | ops_skills))
common_skills = sorted(list(dev_skills & ops_skills))
unique_to_dev = sorted(list(dev_skills - ops_skills))

print(f"Union: {all_skills}")
print(f"Intersection: {common_skills}")
print(f"Dev only: {unique_to_dev}")
端子出力
Unique roles: ['admin', 'editor', 'user']
Union: ['docker', 'javascript', 'kubernetes', 'python', 'sql']
Intersection: ['sql']
Dev only: ['javascript', 'python']

段階的な実装

  • API 結果または CSV ファイルからの重複エントリの削除
  • 2 つのデータベース間の共通要素の決定
  • 大規模な ID リストに対する高速ルックアップ操作の実行

よくある質問

セット内の要素は順序付けされていますか?

いいえ、セットには順序はありません。インデックス (set[0] など) によって要素にアクセスしたり、要素をスライスしたりすることはできません。

セット内の要素を追加または削除するにはどうすればよいですか?

単一の要素を挿入するには .add() メソッドを使用し、要素を削除するには .remove() または .discard() を使用します。 .discard() は、要素が欠落している場合でもエラーをスローしないため、より安全です。

関連トピック

推奨される Python リソース

関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。