iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0
自我挑戰組

30 天全面認識 Python系列 第 21

Day 21:集合的進階應用

  • 分享至 

  • xImage
  •  

為什麼要學集合進階?

昨天我們認識了集合的基本操作,今天要更進一步。集合的強大之處在於它可以快速處理「大量資料比較」與「去除重複值」,這在日常應用裡很常見,像是比對會員名單、過濾重複資料、找出不同清單之間的差異,都可以靠集合來完成,而且效能比用 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

這些方法在處理集合之間的關係時非常實用。

今日小挑戰

假設你在管理一個網站,現在有兩份資料:

  • registered_users(已註冊用戶清單)
  • active_users(今天有登入的用戶清單)

請你寫一個程式,能夠:
1.印出今天登入的用戶有多少是已註冊的(交集)
2.印出有哪些註冊用戶沒有登入(差集)
3.印出今天登入但不在註冊清單裡的帳號(可能是異常登入,差集反過來)

這個挑戰能讓你模擬「用集合分析用戶行為」的場景,體驗集合在真實專案中的威力。
--- by Ricky


上一篇
Day 20:集合(Set)的基礎操作
下一篇
Day 22:檔案的讀取與寫入
系列文
30 天全面認識 Python22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言