lambda 函数
lambda 函数由 lambda 表达式创建,表达式的语法为:
lambda parameters: expression
形参 parameters
是可选的,表达式 expression
会在函数调用时被求值并作为返回值返回。
表达式必须显示地确定为一个表达式,而不能像 return 语句那样返回多个表达式(默认为一个元组)。
lambda 表达式会创建一个没有名字的函数,函数不能包含语句或标注,可以像调用函数一样直接调用它。
(lambda x,y: x**y)(2,3)
8
lambda x,y: x**y
<function __main__.<lambda>(x, y)>
# 返回值必须显示地确定为一个表达式
f = lambda x: sum(x),max(x),min(x)
f([2,3,4])
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-5-1652333b2bc4> in <module>
1 # 必须显示地确定为一个表达式
----> 2 f = lambda x: sum(x),max(x),min(x)
3 f([2,3,4])
NameError: name 'x' is not defined
f = lambda x: (sum(x),max(x),min(x))
f([2,3,4])
(9, 4, 2)
lambda 函数通常在以函数作为参数的高阶函数中使用,没有名称,用完即弃。
a = ['2 2', '2 1 ','2 3']
sorted(a,key=lambda x:''.join(x.split()))
['2 1 ', '2 2', '2 3']
list(map(lambda x:''.join(x.split()), a))
['22', '21', '23']