(源自:https://www.cnblogs.com/jszfy/p/11148963.html)
lambda 函数
一、lambda语法:
lambda argument_list : expression
argument_list:参数列表,与函数括号里的参数列表是一样的,都是用来给函数传递数据
expression:表达式,通常是一个运算
lambda函数:又称“匿名函数”
lambda 函数可接受任意数量的参数,但只能有一个表达式。
例1:求积函数
lambda x, y : x*y
函数输入了 x 和 y,输出是它们的积 x * y
如何使用呢?
a=lambda x, y : x*y
print(a(2,3))
例2:什么也不做的函数
lambda : None
函数没有输入参数,输出是None
例3:求和函数
lambda *args: sum(args)
输入是0~多个数据,输出是它们的和
例4:变为1的函数
lambda **kwargs: 1
输入是任意键值对参数,输出是1
用法
1、将lambda函数赋值给一个变量,通过这个变量 间接调用该lambda函数。
add=lambda x, y : x+y
add(1,2) # 输出为3。
2、将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换。
比如,把标准库time中的函数sleep的功能屏蔽(mask),可以这样设置:
time.sleep=lambda x : None
这样,在后续代码中调用time库的sleep函数将不会执行原有的功能。
例如,执行
time.sleep(3)
时,程序不会休眠3秒钟,而是什么都不做。
3. 将lambda函数作为其他函数的返回值,返回给调用者。
函数的返回值也可以是函数。
例如
return lambda x , y : x+y
返回:加法函数。
这时,lambda函数实际上是定义在某个函数内部的函数,称之为嵌套函数,或者内部函数。
对应的,将包含嵌套函数的函数称之为外部函数。
内部函数能够访问外部函数的局部变量。
4. 将lambda函数作为参数传递给其他函数。
部分Python内置函数接收函数作为参数。典型的此类内置函数有这些。
(1)filter函数。
lambda 函数用于指定过滤列表元素的条件。
例如:
result=filter(lambda x: x % 3 == 0, [1, 2, 3, 4])
for i in result:
print(i)

指定将列表[1,2,3,4]中能够被3整除的元素过滤出来,其结果是[3]。
(2)sorted函数。
lambda 函数用于指定对列表中所有元素进行排序的准则。
例如:
sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))
将列表[1, 2, 3, 4, 5, 6, 7, 8, 9]按照元素与5距离从小到大进行排序
(3)map函数。
lambda 函数用于指定对列表中每一个元素的共同操作。
例如
map(lambda x: x+1, [1, 2, 3])
将列表[1, 2, 3]中的元素分别加1,其结果[2, 3, 4]。
(4)reduce函数。
lambda 函数。
例如
from functools import reduce
sum2 = reduce(lambda x, y: x+y, [1,2,3,4,5])
print(sum2)
结果:15

