千家信息网

Lambda函数有什么用处

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"Lambda函数有什么用处",在日常操作中,相信很多人在Lambda函数有什么用处问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Lambda函数有什么
千家信息网最后更新 2026年11月03日Lambda函数有什么用处

这篇文章主要介绍"Lambda函数有什么用处",在日常操作中,相信很多人在Lambda函数有什么用处问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Lambda函数有什么用处"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、什么是Lambda函数?

Python支持一种有趣的语法,它允许你快速定义单行的最小函数。这些叫做Lambda的函数是从Lisp中借用来的,可以被用在任何需要函数的地方。Lambda函数是一个可以接收任意多个参数包括可选参数,并且返回单个表达式值的匿名函数。有一点要注意,Lambda函数不能包含命令,它们所包含的表达式也不能超过一个。

例子:

>>> lambda x, y : x+y

at 0x102bc1c80>

2、Lambda函数的语法.

Lambda语句中,冒号前是参数,可以有0个或多个,用逗号隔开,冒号右边是返回值。Lambda语句构建的其实是一个函数对象。

(1)无参数:

f = lambda:'Hello python lambda'

f()

#'Hello python lambda'

(2)有参数,无默认值

f = lambda x,y: x*y

f(6,7)

#42

(3)有参数,有默认值

f = lambda x=5, y=8: x*y

f()

#40

f(5,6)

#30

(4)和map, reduce, filter连用

foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]

print filter(lambda x: x % 3 == 0, foo)#python 2.x

list( filter(lambda x: x % 3 == 0, foo) )#python 3.x

#[18, 9, 24, 12, 27]

print map(lambda x: x * 2 + 10, foo)#python 2.x

list( map(lambda x: x * 2 + 10, foo) )#python 3.x

#[14, 46, 28, 54, 44, 58, 26, 34, 64]

from functools import reduce#python 3.x need import reduce

reduce(lambda x, y: x + y, foo)

#139

3、Lambda函数的使用场景。

(1)函数式编程:

例如:一个整数列表,要求按照列表中元素的绝对值大小升序排列

>>> list1 = [3,5,-4,-1,0,-2,-6]

>>> sorted(list1, key=lambda x: abs(x))

[0, -1, -2, 3, -4, 5, -6]

排序函数sorted支持接收一个函数作为参数,该参数作为 sorted的排序依据,这里按照列表元素的绝对值进行排序。

当然,我也可以用普通函数来实现:

>>> def foo(x):

... return abs(x)

...

>>> sorted(list1, key=foo)

[0, -1, -2, 3, -4, 5, -6]

只不过是这种方式代码看起来不够 Pythonic 而已。

>>> add = lambda x,y : x+y

>>> add(5,6)

11

>>> (lambda x,y:x+y)(5,6)

11

(2)Python中最常见的filter筛选、map小刷子、reduce合并,都可以用lambda表达式来生成!对于序列来讲,有三个函数式编程工具: filter()、map()和reduce()。map(function,sequence):把sequence中的值当参数逐个传给function,返回一个包含函数执行结果的list。如果function有两个参数,map(function,sequence1,sequence2)。

#求1~20的平方

>>> list(map(lambda x:x*x,range(1,21))) #Python2.x使用map(lambda x:x*x,range(1,21))

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400]

filter(function,sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回。

#求1~20之间的偶数

>>> list(filter(lambda x:x%2 == 0,range(1,21))) #Python2.x使用filter(lambda x:x%2 == 0,range(1,21))

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

reduce(function,sequence):function接收的参数个数只能为2,先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给function,然后只返回一个结果。

#求1~100之和

>>> from functools import reduce #Python3.x之后需要导入reduce模块

>>> reduce(lambda x,y:x+y,range(1,101))

5050

#求1~100之和,再加上10000

>>> reduce(lambda x,y:x+y,range(1,101),10000)

15050

(3)闭包

闭包:一个定义在函数内部的函数,闭包使得变量即使脱离了该函数的作用域范围也依然能被访问到。
来看一个用lambda函数作为闭包的例子。

>>> def add(n):

... return lambda x:x+n

...

>>> add2 = add(5)

>>> add2(15)

20

4、Lambda函数的优缺点。

优点:

(1)lambda 函数比较轻便,代码简洁,不增加额外变量。即用即删除,很适合需要完成一项功能,但是此功能只在此一处使用。

(2)匿名函数,一般用来给 filter, map 这样的函数式编程服务;

(3)作为回调函数,传递给某些应用,比如消息处理,可以立刻传递(无需变量)。

缺点:

Lambda函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数。和其他很多语言相比,Python的Lambda限制多多,最严重的当属它只能由一条表达式组成。这个限制主要是为了防止滥用,因为当人们发觉 lambda 很方便,就比较容易滥用,可是用多了会让程序看起来不那么清晰,毕竟每个人对于抽象层级的忍耐和理解程度都有所不同。

到此,关于"Lambda函数有什么用处"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

函数 参数 表达式 用处 闭包 学习 变量 多个 结果 排序 编程 三个 之和 代码 例子 元素 冒号 功能 单个 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会主任 互联网的科技 网络科技有限互联网 互联网科技作文 世界互联网领先科技成果 安徽鑫晟辉互联网科技 狮子座互联网科技有限公司 汇久创客互联网科技 狮子座互联网科技培训 互联网科技英文翻译 哈尔滨秒房互联网科技有限公司 东莞新华互联网科技学校 长沙茂晟互联网科技有限公司 南博望互联网科技有限公司 互联网科技公司营业执照怎么办理 21世纪互联网科技成就 南京一网一红互联网科技有限公司 北京互联网科技类企业分布 互联网时代高科技布局 安徽九吞吴互联网科技有限公司 新华互联网科技 深圳九邦互联网科技有限公司 互联网科技革命 长亮科技互联网金融 华脉科技工业互联网产品 互联网科技产品 互联网科技创新服务 佛山市拉法互联网科技有限公司 云南省自由互联网科技有限公司 武汉亿视互联网科技有限公司
0