昨天我們認識了集合的基本操作,今天要更進一步。集合的強大之處在於它可以快速處理「大量資料比較」與「去除重複值」,這在日常應用裡很常見,像是比對會員名單、過濾重複資料、找出不同清單之間的差異,都可以靠集合來完成,而且效能比用 List 快很多。
1.重複的元素
names = ["Tom", "Jerry", "Tom", "Mary", "Jerry"]
unique_names = set(names)
print(unique_names) # {'Tom', 'Jerry', 'Mary'}
2.查元素是否存在
allowed_users = {"Alice", "Bob", "Charlie"}
print("Alice" in allowed_users) # True
print("David" in allowed_users) # False
3.運算的真實案例
比方說我們有兩場活動的參加名單,可以用集合運算快速得到想要的資訊:
event1 = {"Tom", "Jerry", "Alice"}
event2 = {"Alice", "Bob", "Charlie"}
print(event1 | event2) # 聯集 → {'Tom', 'Jerry', 'Alice', 'Bob', 'Charlie'}
print(event1 & event2) # 交集 → {'Alice'}
print(event1 - event2) # 差集 → {'Tom', 'Jerry'}
s = {1, 2, 3}
t = {3, 4, 5}
print(s.isdisjoint(t)) # 是否完全沒有交集 → False
print(s.issubset(t)) # 是否為子集合 → False
print(s.issuperset(t)) # 是否為超集合 → False
這些方法在處理集合之間的關係時非常實用。
假設你在管理一個網站,現在有兩份資料:
請你寫一個程式,能夠:
1.印出今天登入的用戶有多少是已註冊的(交集)
2.印出有哪些註冊用戶沒有登入(差集)
3.印出今天登入但不在註冊清單裡的帳號(可能是異常登入,差集反過來)
這個挑戰能讓你模擬「用集合分析用戶行為」的場景,體驗集合在真實專案中的威力。
--- by Ricky