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) 都能用。
老師標「不考」:集合運算(交集 / 聯集 / 差集 / 對稱差集)、集合比較(issubset 等)、複製、排序列舉 enumerate、不可變集合 frozenset。有概念即可,不必背。
checklist · 考前掃描
最容易掉的點
{} 是空字典,空集合要 set()。
- 集合元素須可雜湊(不可變);放
list 會 TypeError。
- 集合無序,不能
s[0];走訪用 for、判斷用 in、要序號先 list()。
- 唯一的新增方法是
add()。
discard 找不到不報錯;remove 找不到 KeyError;pop 隨機刪。
set(串列) 會去重、且結果無序。
next · 學習閉環
接下來怎麼練
這份 slides
導覽→
PDF 講義
學細節→
index
Pyodide 試跑→
本地練習
自己寫→
測驗卷
≥ 90%
判斷任何集合操作:先想「會不會去重」「能不能索引」「找不到時報不報錯」。