Python进阶—使用lambda创建匿名函数

匿名函数也就是没有名字的函数,语法:

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]

转自 http://17coding.top

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值