Python 进阶
map/filter/reduce
函数式编程三剑客
- 使用 map 转换序列
- 使用 filter 筛选
- 使用 reduce 聚合
map 转换
示例代码(可运行)
Python 0%
filter 筛选
示例代码(可运行)
Python 0%
reduce 聚合
示例代码(可运行)
Python 0%
ℹ️推导式 vs 函数式
列表推导式比 map/filter+lambda 更 Pythonic。reduce 只在复杂聚合时用,简单求和直接用 sum() 就行。
预测输出
from functools import reduce
print(reduce(lambda a,b: a*b, [1,2,3,4]))找 Bugmap的第二个参数必须是可迭代对象,不能是多个独立参数。
list(map(lambda x: x*2, 1,2,3))
填空题填写空白处的代码
from functools import reduce
result = reduce(lambda a,b: a+b, [1,2,3])
print(result) #
选择题
filter(lambda x: x>2, [1,2,3,4]) 结果?
选择题
Python 中比 map/filter + lambda 更推荐、可读性更好的等价写法通常是?
资深工程师加餐
底层原理 · 大厂视角 · 工程经验,点卡片展开
内层函数(或 lambda)捕获的是外层变量本身,而不是定义那一刻的值;循环里定义的多个函数,循环结束后调用往往都拿到最后的值。解决办法是用默认参数 f(x=x) 立即绑定,或用工厂函数包一层。配合 LEGB 作用域顺序(局部→外层→全局→内建)理解,90% 的作用域谜题都能解开。
挑战任务
函数式挑战
简单+50 XP
用map/reduce计算列表中每个数的平方和。
函数式挑战
Python 0%
2 个测试用例
课后作业
管道操作
中等+20 XP
用函数式风格:筛选偶数→平方→求和。
管道操作
Python 0%
1 个测试用例