答案页 · 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. ['a', 'b']
  3. [(1, 'a'), (2, 'b')]正确答案
  4. [(0, 'a'), (1, 'b')]

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

为什么: start=1 让编号从一开始,list() 会显示每个二元组。

03 · 选择题

两个列表长度不同时,zip 会怎样?

  1. 在最短的列表处停止正确答案
  2. 用 None 补齐
  3. 重复较短的列表
  4. 抛出 ValueError

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

为什么: 只要有一个输入用完,zip 就会停止。

04 · 选择题

哪个循环会打印 1 Ada 和 2 Grace?

  1. for n, name in enumerate(names, start=1):正确答案
  2. for n in enumerate(names):
  3. for n, name in zip(names, start=1):
  4. for n, name in 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 道题。

练习本课