三、列表推导式无法取代的高阶函数场景
高阶函数依然不可替代,主要体现在:
1. 归约操作(reduce)
列表推导式总是输出一个列表(或通过生成器表达式惰性求值),但无法直接将列表归约为单个值。此时需要 functools.reduce。
from functools import reduce# 阶乘factorial = reduce(lambda x, y: x * y, [1,2,3,4,5]) # 120# 列表推导式做不到
2. 惰性求值与大数据处理
map/filter 返回迭代器,可以链式操作且不占用内存。列表推导式会立即生成整个列表,对于超大数据集不友好。
# 处理海量数据时使用迭代器result = map(str.upper, filter(str.isalpha, huge_generator))# 等价列表推导式会一次性加载所有元素到内存
3. 多参数映射
map 可以同时接受多个可迭代对象,按位置组合元素:a = [1,2,3]b = [10,20,30]sums = map(lambda x,y: x+y, a, b) # [11,22,33]# 列表推导式需用 zip,但不如 map 简洁