這個主題考什麼
- 正確打包和解包,包括單元素元組的逗號。
- 預測程式碼嘗試修改元組時會發生什麼。
- 在需要固定形狀或可雜湊鍵時使用元組。
常見錯誤
- 需要單元素元組時寫成 (1)。真正的單元素元組是 (1,),逗號不能少。
- 嘗試給 tuple[index] 賦值。元組不支援元素賦值。
- 以為元組總是更快或總是更好;應根據資料是否需要變化來選擇。
範例題
從完整題庫中挑出的 10 道代表題。先自己作答,再展開答案。
-
1. 小明用元組存奶茶配方比例(糖:水:奶 = 1:5:3),元組和串列最大的區別是?
顯示答案
答案
B. 元組不可變,串列可變解析: 元組有序且不可變,串列有序但可變。兩者都有序,真正的區別在可變性:需要修改內容就選串列。元組還能當字典的鍵,串列不行。
-
2. 🧋 小明用元組存奶茶配方比例(不可改),元組不可變意味著?
顯示答案
答案
B. 不能修改元組內的元素解析: 不可變指的是內容不能原地修改,名字仍可重新綁定。元組的身份和長度都固定,所以能安全共用。所以元組適合放坐標、比例這類固定組合。
-
3. 🧋 小明存單杯奶茶的規格,(42,) 的型別是?
顯示答案
答案
A. tuple解析: 42 後面的逗號讓它成為單元素元組,type() 因此是 tuple。這是最小的合法元組,長度只有 1。
-
4. 哪個方法統計某個值在元組裡出現的次數?
顯示答案
答案
A. count解析: count(value) 在元組上可用,回傳相等元素的個數。index 給的是位置,find 屬於字串,len 數的是全部元素。
-
5. 小明把奶茶資訊 (名稱, 價格) = ("奶茶", 15) 拆到兩個變數裡,這利用了元組 ___ 機制
顯示答案
答案
解包解析: 右邊把兩個值打包,左邊按位置逐個取出,這叫元組解包。名字個數必須與元素個數一致,否則拋 ValueError。
-
6. 🧋 小明解包奶茶的(名稱,價格,杯型),交換變數:a, b = ___ 實現互換
顯示答案
答案
b, a解析: 先算右邊得到元組 (b, a),再解包回 a 和 b,不用臨時變數就完成了交換。右邊先於左邊求值。右邊先建好元組再解包,所以沒有中間變數也不會丟值。
-
7. 帶欄位名的輕量元組,常用哪個標準函式庫工廠?
from collections import ____ Point = namedtuple('Point', ['x', 'y'])顯示答案
答案
namedtuple解析: namedtuple 生成元組的子類,欄位還能按名字讀取,point.x 與 point[0] 都可用。它仍是元組,因此不可變。
-
8. 解包 + 元組相加,輸出什麼?
t = (1, 2, 3) a, b, c = t print(b, t + (4,))顯示答案
答案
2 (1, 2, 3, 4)解析: 解包按順序把 1、2、3 綁給 a、b、c,所以 b 是 2。加 (4,) 回傳新元組 (1, 2, 3, 4),t 本身不變。
-
9. 看程式碼,寫出執行結果。
for i, ch in enumerate("ab"): print(i, ch)顯示答案
答案
0 a 1 b
解析: enumerate 產出 (下標, 字元) 對,print 用空格分隔,所以先列印 0 a 再列印 1 b。下標從 0 開始。
-
10. 讀取內層元組的第一個元素。列印什麼?
t = (1, (2, 3)) print(t[1][0])顯示答案
答案
2解析: t[1] 回傳內層元組 (2, 3),再取 [0] 得到第一個元素,列印 2;鏈式下標一次走一層,別想一步到位。
常見問題
為什麼單元素元組需要逗號?
括號只是分組,逗號才建立元組。(1) 是整數 1,而 (1,) 是元組。
元組裡可以放列表嗎?
可以。元組本身不能重新賦值,但裡面的可變物件仍然可以變化。
繼續保持練習節奏。
完整題庫會在這個瀏覽器裡記住進度,支援依主題篩選,並包含每日一題和錯題重練。