高阶函数:map、filter、reduce、sorted底层详解+实战选型 博客导语高阶函数是Python函数式编程基石判定标准只有两个参数接收函数、返回值返回函数。很多开发者只会无脑调用不懂惰性特性、和推导式的选型边界、底层迭代器返回逻辑。本文全覆盖四大内置高阶函数附带性能对比、面试问答、替代方案。一、map 映射函数1.底层原理语法map(func, *iterables)遍历多个可迭代对象将每个元素传入func处理**返回惰性迭代器不占用堆内存**只有强制转换list/tuple时才会执行计算。支持多序列并行映射匹配最短序列长度。# 单序列映射 nums [1,2,3,4] res map(lambda x:x**2, nums) print(type(res)) # map迭代器惰性对象 print(list(res)) # [1,4,9,16] # 双序列并行映射 a [1,2], b[10,20] res2 map(lambda x,y:xy,a,b) print(list(res2)) # [11,22]2.选型避坑简单单元素转换列表推导式更快多序列并行转换优先map代码更简洁。二、filter 过滤函数语法filter(func, iterable)func返回布尔值保留返回True的元素func传入None时自动过滤所有空值、0、None。同样返回惰性迭代器。data [0,1,None,,22,[],33] # 过滤空值 res filter(None, data) print(list(res)) # [1,22,33] # 自定义条件过滤偶数 res2 filter(lambda x:x%20, [1,2,3,4])三、reduce 累积归约函数位于functools内置库Python3移出全局命名空间。语法reduce(func, iter, initNone)func必须接收两个参数依次累积计算最终返回单个值无惰性特性。from functools import reduce # 列表求和 print(reduce(lambda x,y:xy,[1,2,3,4])) # 10 # 带初始值初始值参与第一次计算 print(reduce(lambda x,y:x*y,[2,3],5)) # 30四、sorted 全局排序函数区分list.sort()sorted返回全新列表、不修改原数据、支持所有可迭代对象sort原地修改、仅列表可用。核心参数key排序依据、reverse升降序。user [(李四,24),(张三,20)] # 按年龄升序 new_user sorted(user,keylambda x:x[1]) # 按姓名降序 new_user2 sorted(user,keylambda x:x[0],reverseTrue)面试高频总结map/filter惰性节省内存、适合海量数据reduce适合聚合计算sorted是开发最高频高阶函数。