本答案頁包含 Python itertools 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。
答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。
count(5) 會產生什麼?
答案: 從 5 開始的無限序列
為什麼: count 是惰性且無限的;需要用 islice 或 zip 加上邊界。
chain 會做什麼?
答案: 把可迭代物件首尾拼接
為什麼: chain 會依次讀取可迭代物件,形成單一資料流。
list(islice(count(0), 3)) 會產生什麼?
答案: [0, 1, 2]
為什麼: islice 從無限的 count 流中取出前三個值。
相同鍵分散時,使用 groupby 前必須先做什麼?
答案: 排序資料
為什麼: groupby 只分組相鄰元素,所以相同鍵不連續時要先排序。
補全把兩個可迭代物件拼接起來的函式。
from itertools import chain
print(list(____([1], [2])))答案: chain
為什麼: chain 先讀取第一個可迭代物件,再讀取第二個。
補全給無限 count 加上邊界的函式。
from itertools import count, islice
print(list(____(count(1), 2)))答案: islice
為什麼: islice 從可迭代物件中取出固定數量的值。
補全分組相鄰值的函式。
from itertools import groupby
data = [1, 1, 2]
for key, group in ____(data):
print(key, len(list(group)))答案: groupby
為什麼: groupby 會把共用同一個鍵的連續元素分組。
補全匯入拼接兩個列表的函式。
from itertools import ____
print(list(chain([1], [2])))答案: chain
為什麼: chain 函式從 itertools 匯入。
程式碼的輸出結果是什麼?
from itertools import count, islice
print(list(islice(count(3), 2)))答案: [3, 4]
為什麼: 序列從三開始,islice 取出兩個值。
螢幕上會顯示什麼?
from itertools import chain
print(list(chain("ab", "cd")))答案: ['a', 'b', 'c', 'd']
為什麼: chain 把兩個字串拼成一個字元流。
這段程式碼會輸出什麼?
from itertools import chain
print(list(chain([1], [2, 3])))答案: [1, 2, 3]
為什麼: chain 先讀取第一個列表,再讀取第二個列表。
執行結果是什麼?
from itertools import groupby
data = [1, 1, 2]
print([(k, len(list(g))) for k, g in groupby(data)])答案: [(1, 2), (2, 1)]
為什麼: 第一組有兩個一,第二組有一個二。
先試一遍題目
打開 Python itertools 練習頁,用即時回饋回答同樣的 12 道題。