Python lambda表达式

 

lambda只是一个表达式,函数体比def简单很多。lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。

在常规的def函数构造中,可以有任意数量的语句,并且在def函数定义中,首先需要给函数一个名称,对于lambda表达式而言,lambda是一个匿名函数,不需要给lambda构造提供任何名称,正如我们以前学习y(x)函数一样,用这样的理解方式去理解lambda表达式,就会容易的很多,可以说lambda就是为了简单方便直接的构建一个表达式或者一个有结果的语句,结果返回给等号左边的变量。

lambda的构造更多的是为了方便,当你需要构造一个lambda函数时,请记住以下几点:

1、lambda是一个表达式,而不是一个语句,它不支持表达式块。

2、lambda在我们需要的地方进行定义,它不需要命名。

3、lambda不需要返回语句

具有单一参数的Lambda的构造

1 #具有单一参数的lambda结构构造
2 x = [23,34,55]
3 func = lambda x:max(x)
4 print(func(x))   #55

可以解释为x作为func(x)函数的一个变量,触发执行max(x)这个式子,max(x)的值赋值给func

具有逻辑运算符的Lambda构造

#具有逻辑运算符的Lambda构造
2 signal = 'SELL'
3 func = lambda x:x>50 and signal == 'BUY'
4 print(func(65))    #False

这个可以根据上面解释那样解释,x作为func(x)函数的一个变量,触发执行冒号后面的语句,并把结果赋值给func

带有条件表达式的Lambda构造

#带有条件表达式的Lambda构造
2 func = lambda x:'BUY' if x > 45 else 'SELL'
3 print(func(56))     #BUY

x作为func(x)函数的一个变量,触发执行冒号后面的语句,如果x大于45 结果为BUY,并把结果赋给func,否则把SELL赋给func

将Lambda表达式与Map、Filter和Reduce功能一起使用

Lambda通常与map()、filter()和reduce()等函数结合在一起使用

1 #lambda与map()映射函数一起使用
2 seq = [1,2,3,4,5]
3 func = map(lambda x:x**2,seq)
4 print(list(func))    #[1, 4, 9, 16, 25]
1 #lambda与filter()滤波函数一起使用
2 Signals = ['Buy','Sell',None,'Sell','Sell','Sell']
3 func = filter(lambda x:x == 'Buy' or x == 'Sell',Signals)
4 print(list(func))   #['Buy', 'Sell', 'Sell', 'Sell', 'Sell']
1 #lambda与reduce()函数一起使用
2 #在python 3中,reduce()函数已经被从全局名字空间里移除了,它现在被放置在 fucntools 模块里
3 # 如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数:
4 from functools import reduce
5 print(reduce((lambda x,y:x + y),[2,1.35,-2.4,3]))   #3.95

上面三个段代码分别表示执行map,filter函数里面的表达式,并把结果赋值给func,最后那个直接打印reduce返回的值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值