答案页 · 12 道题

Python Lambda、map 与 filter练习答案

本页汇总 Python Lambda、map 与 filter 的 12 道练习。先做练习页,再回到这里核对准确答案和原因。

快速答案

本答案页包含 Python Lambda、map 与 filter 的 4 道选择题、4 道填空题和 4 道输出预测题,每题都给出准确答案和简短解释。

答案已完整展示,建议先尝试作答,再用本页核对。第一次练习最好从互动练习页开始。

01 · 选择题

lambda 是什么?

  1. 一个小型匿名函数正确答案
  2. 数学模块
  3. 一种列表
  4. 带条件的循环

答案: 一个小型匿名函数

为什么: lambda 用一个表达式定义函数。

02 · 选择题

Python 3 中 map 返回什么?

  1. 一个列表
  2. 一个字符串
  3. 一个迭代器正确答案
  4. 一个字典

答案: 一个迭代器

为什么: Python 3 的 map 是惰性的;要看全部值,需要用 list() 包起来。

03 · 选择题

这段代码会输出什么?

print(list(map(lambda x: x * 2, [1, 2])))
  1. [2, 2]
  2. [2, 4]正确答案
  3. [1, 4]
  4. [1, 2]

答案: [2, 4]

为什么: 每个值都变成两倍,list() 会把 map 迭代器展开。

04 · 选择题

哪个表达式只保留大于 2 的数字?

  1. list(lambda x: x > 2, nums)
  2. map(lambda x: x > 2, nums)
  3. filter(lambda x: x > 2, nums)正确答案
  4. filter(nums, lambda x: x > 2)

答案: filter(lambda x: x > 2, nums)

为什么: filter 的第一个参数是谓词,第二个参数是可迭代对象。

05 · 填空题

补全匿名函数。

double = ____ n: n * 2
print(double(3))

答案: lambda

为什么: lambda 用来开始一个匿名函数表达式。

06 · 填空题

补全转换,使 map 结果能以列表形式打印。

print(____(map(str, [1, 2])))

答案: list

为什么: list() 会消费 map 迭代器并构建列表。

07 · 填空题

补全判断偶数的运算符。

nums = [1, 2, 3, 4]
print(list(filter(lambda n: n ____ 2 == 0, nums)))

答案: %

为什么: n % 2 == 0 在 n 是偶数时为真。

08 · 填空题

补全函数,让每个数字求平方。

nums = [1, 2, 3]
print(list(map(____, nums)))

答案: lambda n: n * n

为什么: lambda 接收一个数字并返回它的平方。

09 · 输出预测

运行结果是什么?

print((lambda n: n + 3)(4))

答案: 7

为什么: lambda 立即用 4 调用,结果是 7。

10 · 输出预测

这段程序打印出什么?

print(list(map(lambda s: s.upper(), ["a", "b"])))

答案: ['A', 'B']

为什么: 每个字符串都转为大写,list() 显示两个结果。

11 · 输出预测

代码的输出结果是什么?

print(list(filter(lambda n: n % 2 == 1, [1, 2, 3, 4])))

答案: [1, 3]

为什么: 奇数值是 1 和 3。

12 · 输出预测

屏幕上会显示什么?

print(list(map(len, ["a", "bb", "ccc"])))

答案: [1, 2, 3]

为什么: 长度分别是 1、2、3。

先试一遍题目

打开 Python Lambda、map 与 filter 练习页,用即时反馈回答同样的 12 道题。

练习本课