鱼C论坛

 找回密码
 立即注册
查看: 3595|回复: 5

[技术交流] Python中的lambda——匿名函数

[复制链接]
发表于 2017-6-8 23:00:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Messj 于 2017-6-9 20:31 编辑

1、lambda是什么?
lambda是指一类无需定义标识符(函数名)的函数或子程序。.lambda主体是一个表达式,而不是一个代码块。lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。上例的代码x为入口参数,x+1为函数体。在这里lambda简化了函数定义的书写形式。使得代码更为简洁,但是使用函数的定义方式更为直观,易理解。
举个例子如下:
>>>func=lambda x:x+1
>>>print(func(1))
2
>>>print(func(2))
3

#以上lambda等同于以下函数
def func(x):
    return(x+1)


游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 2鱼币 +6 收起 理由
康小泡 + 2
小甲鱼 + 4 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-6-9 08:04:39 | 显示全部楼层
本帖最后由 jerryxjr1220 于 2017-6-9 08:09 编辑

其实lambda函数虽然是匿名函数,但是其本质还是函数。既然是函数,在调用时还是需要调用时间的,虽然对于数据量小的运算感觉不出来,但是对于大数据量的处理,调用函数就会花费更多的时间。
相对应的元组推导式、列表推导式和字典推导式执行效率就要快很多。
举个例子,计算1亿以内所有正整数的平方,都以列表形式输出。
import time
start = time.time()
list(map(lambda x: x * x, range(100000000)))
end = time.time()
print('Lambda函数运行时间:%.3f sec' % (end - start))

start = time.time()
[x * x for x in range(100000000)]
end = time.time()
print('列表推导式运行时间:%.3f sec' % (end - start))
结果:
Lambda函数运行时间:19.475 sec
列表推导式运行时间:11.757 sec
***Repl Closed***

Lambda函数调用比推导式运算速度慢了差不多50%

不过map函数输出的是一个生成器对象,如果不转列表的话,基本上就没有运算量,这是map函数的优势。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-9 20:33:31 | 显示全部楼层
本帖最后由 Messj 于 2017-6-9 20:37 编辑
jerryxjr1220 发表于 2017-6-9 08:04
其实lambda函数虽然是匿名函数,但是其本质还是函数。既然是函数,在调用时还是需要调用时间的,虽然对于数 ...


你的说法没有错,匿名函数也是一种函数。所谓函数广泛的可以说做语句和代码的封装。个人认为,封装的最主要的作用就是能够批量化的使用。如果不能被批量化使用,其效果就会差上许多。

谢谢你的解释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-15 17:14:55 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-3 23:34:28 | 显示全部楼层
看看其余内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-16 10:21:40 | 显示全部楼层
看看其余内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 05:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表