Python 集合:運算、方法與集合論

Python 中的大師集。學習儲存唯一值、執行交集、並集、差異,並了解散列的效能優勢。

在編輯器中嘗試

概述

Set 是 Python 中唯一元素的無序集合。集合建立在哈希表上,這使得它們針對成員資格測試進行了高度最佳化 - 確定特定元素是否在集合內。檢查某個項目是否在清單中需要掃描每個項目(「O(N)」操作),而檢查集合中的成員資格則需要「O(1)」常數時間。這使得集合對於重複消除和批量資料過濾非常強大。

集合使用包含值(不含冒號)的花括號“{}”或使用內建的“set()”建構函數進行初始化。請注意,由於大括號也用於字典,因此編寫空大括號“{}”會初始化一個空字典。要初始化一個空集,您必須使用“set()”。集合內的元素必須是可散列且不可變的,這意味著您可以儲存數字、字串和元組,但不能在集合內儲存列表或字典。

除了基本的添加和刪除方法之外,Python 集合本身還支持數學集合論中的運算。這包括用於合併集合的並集(`|` 或 `.union()`)、用於查找公共元素的交集(`&` 或 `.intersection()`)、用於查找一個集合唯一的元素的差值(`-` 或 `.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 檔案中刪除重複條目
  • 確定兩個資料庫之間的共同元素
  • 對大型 ID 清單執行快速尋找操作

常見問題解答

集合中的元素是有序的嗎?

不,集合是無序的。您無法透過索引(如 set[0])存取元素或對它們進行切片。

如何新增或刪除集合中的元素?

使用 .add() 方法插入單一元素,使用 .remove() 或 .discard() 方法刪除一個元素。 .discard() 比較安全,因為如果元素遺失它不會拋出錯誤。

相關主題

推薦的 Python 資源

透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。