Python高阶函数详解:Lambda、Map、Reduce与Filter用法

Noah
Noah
发布时间:2026-10-13| 2人浏览过
原创

本文详解Python中几种核心高阶函数的用法与区别。通过Lambda表达式定义匿名函数,结合Map进行元素映射,利用Reduce实现累加运算,并使用Filter执行条件过滤。文章包含具体代码示例,解析各函数的参数结构、执行逻辑及多参数并行处理特性,帮助开发者掌握函数式编程技巧。

几个特殊的函数(待补充)

Python支持多种编程范式,其中包括函数式编程。其核心体现为几个关键函数:filter、map、reduce、lambda以及yield。

Lambda表达式

>>> g = lambda x,y:x+y #x+y,并返回结果
>>> g(3,4)
7
>>> (lambda x:x**2)(4) #返回4的平方
16

Lambda函数的基本使用方式如下:

在lambda关键字后直接跟随变量定义。

变量定义之后使用冒号分隔。

冒号后跟随表达式,该表达式的计算结果即为函数的返回值。

冒号后跟随表达式,该表达式的计算结果即为函数的返回值。

例如,若需生成一个列表,其中包含某数字的1次方至4次方,可使用lambda实现:

>>> lamb = [ lambda x:x,lambda x:x**2,lambda x:x**3,lambda x:x**4 ]
>>> for i in lamb:
...   print i(3),
... 
3 9 27 81

Map函数

map()是Python的内置函数,其基本语法格式为:

map(func, seq)

其中func代表一个函数,seq代表一个序列对象。执行时,序列中的元素按从左到右顺序依次取出,

传入func函数进行处理,并将func返回的结果依次存入一个列表中。例如:

>>> items = [1,2,3,4,5]
>>> squared = []
>>> for i in items:
...   squared.append(i**2)
... 
>>> squared
[1, 4, 9, 16, 25]

>>> def sqr(x): return x**2
... 
>>> map(sqr,items)
[1, 4, 9, 16, 25]

>>> map(lambda x: x**2, items)
[1, 4, 9, 16, 25]

>>> [ x**2 for x in items ]   #这个我最喜欢了,一般情况下速度足够快,而且可读性强
[1, 4, 9, 16, 25]

关键点:

对iterable中的每个元素,依次应用function方法(本质上等同于for循环)。

将所有处理结果返回为一个list。

若提供多个参数,则对这些参数并行执行function。

继续参考以下两个示例:

>>> lst1 = [1,2,3,4,5]
>>> lst2 = [6,7,8,9,0]
>>> map(lambda x,y: x+y, lst1,lst2)   #将两个列表中的对应项加起来,并返回一个结果列表
[7, 9, 11, 13, 5]
>>> lst1 = [1,2,3,4,5]
>>> lst2 = [6,7,8,9,0]
>>> lst3 = [7,8,9,2,1]
>>> map(lambda x,y,z: x+y+z, lst1,lst2,lst3)
[14, 17, 20, 15, 6]

由此可见map函数的强大与简洁。若使用for循环实现相同功能,代码将显得更为繁琐。

Reduce函数

直接参考示例:

>>> reduce(lambda x,y: x+y,[1,2,3,4,5])
15

reduce函数的计算方式是将列表元素进行累加,计算过程为((((1+2)+3)+4)+5)=15。与map函数相比,map侧重于逐元素映射(上下运算),而reduce侧重于逐个元素间的累积运算(横向运算)。

reduce函数可接受第三个参数作为初始值:例如:

>>> reduce(lambda x,y: x+y,[1,2,3,4,5],100)
115

上述列表的计算将以100为初始值执行累加,首先计算100+1。

Filter函数

filter的中文含义为“过滤器”,在Python中,它起到过滤数据的作用。

通过以下代码进行体会:

>>> numbers = range(-5,5)
>>> numbers
[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]

>>> filter(lambda x: x>0, numbers) 
[1, 2, 3, 4]

>>> [x for x in numbers if x>0]   #与上面那句等效
[1, 2, 3, 4]

>>> filter(lambda x: x > 3, [1,2,3,4,5]) 
[4,5]

参考filter的官方文档解释:

filter(...)
  filter(function or None, sequence) -> list, tuple, or string
  
  Return those items of sequence for which function(item) is true. If
  function is None, return the items that are true. If sequence is a tuple
  or string, return the same type, else return a list.

总结

以上就是本文关于简单了解Python中的几种函数的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python算法输出1-9数组形成的结果为100的所有运算式、Python生成数字图片代码分享等,有什么问题可以随时留言,小编会及时回复大家的。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。