匿名函数也就是没有名字的函数,语法:
lambda 参数:表达式
整个lambda表达式相当于一个def函数,可以传参,参数可以多个,以逗号隔开;有返回值。lambda常使用于创建简单的函数,一行搞定,灵活运用可使代码更简洁,举一些例子:
func1 = lambda x: x**2
def func2(x):
return x**2
print func1(2)
print func2(2)
#这里func1和func2完全等价的,输出都是4
#lambda常结合map、filter、reduce使用
a = range(-5, 5)
print map(lambda x: x**2, a) #求a中所有元素的平方
print filter(lambda x: x % 2 == 0, a) #求a中所有能被2整除的元素
print reduce(lambda x, y: x + y, a) #求a中元素的累和
以下是上段代码的输出:
4
4
[25, 16, 9, 4, 1, 0, 1, 4, 9, 16]
[-4, -2, 0, 2, 4]
-5
map、filter也可以用…for…in…if…实现:
print [x**2 for x in range(-5, 5)]
print [x for x in range(-5, 5) if x % 2 == 0]
lambda也可以将函数作为参数传入,例如:
#如求一个数的平方和三次方
def f1(x):
return x**2
def f2(x):
return x**3
for i in range(5):
print map(lambda x: x(i), [f1,f2])
输出:
[0, 0]
[1, 1]
[4, 8]
[9, 27]
[16, 64]