答案頁 · 12 道題

Python enumerate 與 zip練習答案

本頁彙整 Python enumerate 與 zip 的 12 道練習。先做練習頁,再回到這裡核對準確答案和原因。

快速答案

本答案頁包含 Python enumerate 與 zip 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。

答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。

01 · 選擇題

enumerate 每輪會產生什麼?

  1. 只有索引
  2. 只有元素
  3. 列表的副本
  4. 一個索引和一個元素正確答案

答案: 一個索引和一個元素

為什麼: enumerate 會產生包含位置和值的二元組。

02 · 選擇題

這段程式列印出什麼?

print(list(enumerate(["a", "b"], start=1)))
  1. 1 a 2 b
  2. [(1, 'a'), (2, 'b')]正確答案
  3. ['a', 'b']
  4. [(0, 'a'), (1, 'b')]

答案: [(1, 'a'), (2, 'b')]

為什麼: start=1 讓編號從一開始,list() 會顯示每個二元組。

03 · 選擇題

兩個列表長度不同時,zip 會怎樣?

  1. 用 None 補齊
  2. 拋出 ValueError
  3. 在最短的列表處停止正確答案
  4. 重複較短的列表

答案: 在最短的列表處停止

為什麼: 只要有一個輸入用完,zip 就會停止。

04 · 選擇題

哪個迴圈會列印 1 Ada 和 2 Grace?

  1. for n, name in zip(names, start=1):
  2. for n, name in names:
  3. for n, name in enumerate(names, start=1):正確答案
  4. for n in enumerate(names):

答案: for n, name in enumerate(names, start=1):

為什麼: enumerate 先接收可迭代物件,start 是關鍵字參數。

05 · 填空題

補全迴圈,讓每個元素都得到索引。

items = ["a", "b"]
for i, item in ____(items):
    print(i, item)

答案: enumerate

為什麼: enumerate 會同時給出索引和元素。

06 · 填空題

補全讓編號從一開始的參數。

for n, item in enumerate(["a", "b"], ____=1):
    print(n, item)

答案: start

為什麼: 這個關鍵字參數叫 start。

07 · 填空題

補全把兩個列表配對起來的函式。

names = ["Ada", "Grace"]
scores = [92, 88]
pairs = list(____(names, scores))

答案: zip

為什麼: zip 會並行走訪兩個可迭代物件。

08 · 填空題

補全呼叫,讓第一項是 (0, 'a')。

print(next(____(["a"])))

答案: enumerate

為什麼: next() 向 enumerate 請求第一對值。

09 · 輸出預測

程式碼的輸出結果是什麼?

print(list(enumerate(["x", "y"])))

答案: [(0, 'x'), (1, 'y')]

為什麼: 預設從零開始,list() 會顯示這些二元組。

10 · 輸出預測

螢幕上會顯示什麼?

print(list(zip([1, 2], ["a"])))

答案: [(1, 'a')]

為什麼: 較短輸入用完時 zip 就停止,所以只剩一個二元組。

11 · 輸出預測

這段程式碼會輸出什麼?

print([i for i, _ in enumerate("abc", start=2)])

答案: [2, 3, 4]

為什麼: 即使沒有使用字元,索引仍然是 2、3、4。

12 · 輸出預測

執行結果是什麼?

print(dict(zip(["a", "b"], [1, 2])))

答案: {'a': 1, 'b': 2}

為什麼: zip 生成二元組,dict 把每個二元組變成鍵和值。

先試一遍題目

打開 Python enumerate 與 zip 練習頁,用即時回饋回答同樣的 12 道題。

練習本課