本答案頁包含 Python enumerate 與 zip 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。
答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。
enumerate 每輪會產生什麼?
答案: 一個索引和一個元素
為什麼: enumerate 會產生包含位置和值的二元組。
這段程式列印出什麼?
print(list(enumerate(["a", "b"], start=1)))答案: [(1, 'a'), (2, 'b')]
為什麼: start=1 讓編號從一開始,list() 會顯示每個二元組。
兩個列表長度不同時,zip 會怎樣?
答案: 在最短的列表處停止
為什麼: 只要有一個輸入用完,zip 就會停止。
哪個迴圈會列印 1 Ada 和 2 Grace?
答案: for n, name in enumerate(names, start=1):
為什麼: enumerate 先接收可迭代物件,start 是關鍵字參數。
補全迴圈,讓每個元素都得到索引。
items = ["a", "b"]
for i, item in ____(items):
print(i, item)答案: enumerate
為什麼: enumerate 會同時給出索引和元素。
補全讓編號從一開始的參數。
for n, item in enumerate(["a", "b"], ____=1):
print(n, item)答案: start
為什麼: 這個關鍵字參數叫 start。
補全把兩個列表配對起來的函式。
names = ["Ada", "Grace"]
scores = [92, 88]
pairs = list(____(names, scores))答案: zip
為什麼: zip 會並行走訪兩個可迭代物件。
補全呼叫,讓第一項是 (0, 'a')。
print(next(____(["a"])))答案: enumerate
為什麼: next() 向 enumerate 請求第一對值。
程式碼的輸出結果是什麼?
print(list(enumerate(["x", "y"])))答案: [(0, 'x'), (1, 'y')]
為什麼: 預設從零開始,list() 會顯示這些二元組。
螢幕上會顯示什麼?
print(list(zip([1, 2], ["a"])))答案: [(1, 'a')]
為什麼: 較短輸入用完時 zip 就停止,所以只剩一個二元組。
這段程式碼會輸出什麼?
print([i for i, _ in enumerate("abc", start=2)])答案: [2, 3, 4]
為什麼: 即使沒有使用字元,索引仍然是 2、3、4。
執行結果是什麼?
print(dict(zip(["a", "b"], [1, 2])))答案: {'a': 1, 'b': 2}
為什麼: zip 生成二元組,dict 把每個二元組變成鍵和值。
先試一遍題目
打開 Python enumerate 與 zip 練習頁,用即時回饋回答同樣的 12 道題。