Messj 发表于 2017-6-8 23:00:38

Python中的lambda——匿名函数

本帖最后由 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)


**** Hidden Message *****

jerryxjr1220 发表于 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()

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

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

不过map函数输出的是一个生成器对象,如果不转列表的话,基本上就没有运算量,这是map函数的优势。

Messj 发表于 2017-6-9 20:33:31

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

jerryxjr1220 发表于 2017-6-9 08:04
其实lambda函数虽然是匿名函数,但是其本质还是函数。既然是函数,在调用时还是需要调用时间的,虽然对于数 ...

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

谢谢你的解释

蜗牛呼呼累 发表于 2017-6-15 17:14:55

{:5_92:}{:5_90:}

shawnz 发表于 2020-3-3 23:34:28

看看其余内容

lkxuepython 发表于 2020-10-16 10:21:40

看看其余内容
页: [1]
查看完整版本: Python中的lambda——匿名函数