Lambda函数,即Lambda 表达式(lambda expression),是一个匿名函数(不存在函数名的函数),Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction)。
一、lambda函数也叫匿名函数,即,函数没有具体的名称。先来看一个最简单例子:
1
2
3
|
def f(x):
return x * * 2
print f( 4 )
|
Python中使用lambda的话,写成这样
1
2
|
g = lambda x : x * * 2
print g( 4 )
|
二、lambda和普通的函数相比,就是省去了函数名称而已,同时这样的匿名函数,又不能共享在别的地方调用。
其实说的没错,lambda在Python这种动态的语言中确实没有起到什么惊天动地的作用,因为有很多别的方法能够代替lambda。
1. 使用Python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
2. 对于一些抽象的,不会别的地方再复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。
3. 使用lambda在某些时候让代码更容易理解。
lambda基础
lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。lambda语句构建的其实是一个函数对象,见证一下:
1
2
3
4
5
6
7
|
>>> foo = [ 2 , 18 , 9 , 22 , 17 , 24 , 8 , 12 , 27 ]
>>> print filter ( lambda x: x % 3 = = 0 , foo)
[ 18 , 9 , 24 , 12 , 27 ]
>>> print map ( lambda x: x * 2 + 10 , foo)
[ 14 , 46 , 28 , 54 , 44 , 58 , 26 , 34 , 64 ]
>>> print reduce ( lambda x, y: x + y, foo)
139
|
在对象遍历处理方面,其实Python的for..in..if语法已经很强大,并且在易读上胜过了lambda。
defaultdict是字典类型,可以为defaultdict设置默认值,可以通过lambda设置默认值。
下面举几个例子:
1
2
3
4
5
6
7
|
from collections import * x = defaultdict( lambda : 0 ) / / 默认值是 0
print x[ 0 ]
y = defaultdict( lambda :defaultdict( lambda : 0 )) / / 默认值是一个字典,字典的默认值是 0
print y[ 0 ]
z = defaultdict( lambda :[ 0 , 0 , 0 ]) / / 默认值是一个列表,[ 0 , 0 , 0 ].
print z[ 0 ]
|
输出结果:
1
2
3
|
0
defaultdict(<function < lambda > at0x7f097797af50>, {})
[ 0 , 0 , 0 ]
|
总结
以上所述是小编给大家介绍的Python lambda函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:https://www.cnblogs.com/dahexia/archive/2018/10/10/9765838.html