CH07 · 學習導覽

集合

去重、唯一、無序
Python 程式設計 · 滄海二版 CH07 · 導覽(完整內容見 PDF 講義)
key idea · 三特性

集合的三個關鍵特性

① 元素唯一
同一元素只出現一次,重複自動去除
② 無序
沒有排位順序,不能用序號 s[0] 取值。
③ 元素可雜湊
只能放不可變型別(數值/字串/元組),放 list 會錯。

集合與字典同為無序集合、底層雜湊;差別是字典存鍵值組合、集合只存元素。

signature · 招牌用途

去重:list → set

串列
['Python', 'Python', 100, 100]
→ set() → 集合
{'Python', 100}

集合最常見的用途就是過濾重複資料。代價:結果無序、不能再用序號取值。

declare · 宣告陷阱

兩個宣告陷阱

{} 是空字典
空集合只能set()
type({})dict 不是 set。
元素須可雜湊
{[1,2]}TypeError: unhashable
串列可變、不能當元素;元組可以。
read · 讀取

不能索引,用 for / in

想做的事寫法
走訪所有元素for x in s:
判斷是否存在'Java' in s / not in
需要序號list(s) 轉串列再索引
直接 s[0]TypeError(集合無序)
edit · 增刪

增加與刪除

方法作用
s.add(x)唯一的新增方法(沒有 append/insert)
s.discard(x)刪除;找不到 不報錯
s.remove(x)刪除;找不到 KeyError
s.pop()隨機刪一個並回傳(不能指定序號)
s.clear()清空成 set()
compare · 刪除三法

discard / remove / pop

discard(x)
指定值刪;
找不到不報錯,最安全。
remove(x)
指定值刪;
找不到丟 KeyError
pop()
隨機刪一個並回傳;
不能像串列 pop(序號)。
stat & scope · 統計與範圍

統計,與考試範圍

len(s) max(s) min(s) sum(s) 都能用。

checklist · 考前掃描

最容易掉的點

  • {} 是空字典,空集合要 set()
  • 集合元素須可雜湊(不可變);放 list 會 TypeError。
  • 集合無序,不能 s[0];走訪用 for、判斷用 in、要序號先 list()
  • 唯一的新增方法是 add()
  • discard 找不到不報錯;remove 找不到 KeyError;pop 隨機刪。
  • set(串列) 會去重、且結果無序。
next · 學習閉環

接下來怎麼練

這份 slides
導覽
PDF 講義
學細節
index
Pyodide 試跑
本地練習
自己寫
測驗卷
≥ 90%

判斷任何集合操作:先想「會不會去重」「能不能索引」「找不到時報不報錯」。