python lambda 逻辑_python 之lambda表达式

点击蓝字关注我们

209f0c39e98d109c40b9563f5629ae231dc.png

在学习python的过程中,lambda的语法时常会使人感到困惑,lambda是什么,为什么要使用lambda,是不是必须使用lambda?

lambda表达式算是python一种比较方便的语法了,主要作用是代替简单的函数,免去了编写函数的烦恼,语法也更加地简洁。下面就简单介绍一下lambda的使用场景。从本质上来讲,lambda是一个函数,可以接受参数输入。

lambda 基础用法

lambda表达式的基础用法,做简单的加减乘除,或者格式修改操作。

funca = lambda x: x+1funca(2)out:3

lambda和if结合使用

lambda表达式既然和函数一样那么也可以用逻辑控制流,用if去做判断,返回我们想要的东西。

funcb = lambda x:x+1 if x==1 else 0funcb(1)out:2funcb(2)out:0

lambda表示式和for循环结合使用

跟if不一样,lambda表达式里用for循环会报错,但是也可以for循环一起用,只不过比较复杂,用了for循环生成的是一个由函数组成的列表。

funcc = [lambda x: x+j for j in range(5)][f(1) for f in funcc]out:[5, 5, 5, 5, 5]

但是从上面的输出来看,又让人非常困惑,为什么全都是5,而不是[1,2,3,4,5]。这里需要解释的是:这个循环控制了输出五个lambda函数,但是每个函数都是执行到循环的最后一步,也就是说x+j实际上和x+4是等价的,每个函数都一样。

lambda表达式的嵌套使用

这个虽然说也有用的,但是可读性特别差,尽量避免使用,毕竟用lambda表达式是为了简单,这么用实在是让人捉摸不透。还是举个例子:

funcd = lambda: lambda x: x + 5funcdd = funcd()funcdd(3)out:8

看完你应该也觉得没有任何意义吧。

lambda表达式和map函数结合使用

我估计这个是最常用的使用方法,因为map本身的作用就是对一个list套用一个方法。来看例子。

list1 = list(map(lambda x: x**2,[1,2,3,4]))out: [1, 4, 9, 16]

lambda表达式和filter函数结合使用

这个是另一个比较重要的应用场景就是筛选出来符合条件的数据。

list2 = list(filter(lambda x:x<=4,[2,3,4,5]))out:[2, 3, 4]

lambda表达式用于pandas

pandas里的apply函数,可以用自己编写的lambda表达式这 个是非常方便的,也是经常使用,举一个小数转化为百分比的案例吧。

#先生成一个5行一列的dataframepd_1 = pd.DataFrame([round(np.random.random(),2) for _ in range(5)])#数据长这样00 0.951 0.622 0.043 0.614 0.77#接下来转换pd_2 = pd_1[0].apply(lambda x: '{:.0%}'.format(x))out:0 95%1 62%2 4%3 61%4 77%

通过以上例子,我们发现,lambda的使用大量简化了代码,使代码简练清晰。但是值得注意的是,这会在一定程度上降低代码的可读性。如果不是非常熟悉python的人或许会对此感到不可理解。

lambda 定义了一个匿名函数

lambda 并不会带来程序运行效率的提高,只会使代码更简洁。

如果可以使用for...in...if来完成的,坚决不用lambda。

如果使用lambda,lambda内不要包含循环,如果有,我宁愿定义函数来完成,使代码获得可重用性和更好的可读性。

总结:lambda 是为了减少单行函数的定义而存在的。

8d3a45c1f35393b4b2265e66158bde65d77.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值