串列與元組都是「序列型別」:元素有排位順序、可用序號取值。差別只有一個字:可不可變。
[ ] / list()→
取值append insert pop remove del→
進階元組走同一條路,但「增刪改」整段鎖死,只剩取值與不改原物件的查詢。
| 操作 | 回傳 | 原物件 |
|---|---|---|
L.sort() / reverse() | None | 被改 |
L.remove(x) | None | 被改 |
L.pop(i) | 被移除的元素 | 被改 |
sorted(L) | 新的已排序串列 | 不變 |
L1 + L2 / L * n | 新串列 | 不變 |
陷阱:x = L.sort() 會讓 x 變 None,不是排序後的串列。
MyPrice = [400, 300]
先在記憶體建一個 list 物件,再把 MyPrice 這張名牌貼上去。
= 是「貼名牌」,不是「拷貝資料」。
理解這句話,下面三格全通。
b = aa[:]deepcopyimport copy。巢狀(串列裡有子串列)時,淺與深的差別才會浮現,這是本章最重的考點。
Tup[1] = x → TypeErrorTup.sort() → AttributeErrorappend / pop / del 元素Tup[2].append('.Net')index count len max min sum 與 sorted()。[a:b] 含頭不含尾;[::-1] 反轉。remove()/sort()/reverse() 回傳 None;pop() 回傳被移除元素。(10,) 是元組、(10) 是整數。index() 找不到丟 ValueError。= 是別名不是複製;巢狀要 deepcopy 才完全獨立。追蹤任何 Python:畫物件參照圖 → 逐行更新名牌 → 追別名與可變性 → 預測輸出 → 試跑對照。