本答案页包含 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 道题。