python匿名函数lambda的应用

假设有这样一个问题:

现在给定一个 list:a = [1,2,3,4,5,6],要求使用匿名函数将个 list 根据奇数偶数
分成两个 list。
首先如果不考虑匿名函数,我们自己定义一个函数来求解问题:
def division_list(lis_0,lis1=[],lis2=[]):
    for i in lis_0:
        if i % 2 == 0:
            lis1.append(i)
        else:
            lis2.append(i)
    return lis1,lis2

定义好函数,只需要将a作为参数传入即可。输出的结果就是:([2, 4, 6], [1, 3, 5])。

如果使用lambda应该如何书写?函数名 = lambda<参数> : 表达式

b = list(filter(lambda i : i%2==0, a))
c = list(filter(lambda i : i%2==1, a))
print(b,c)

filter(function, iterable)函数大家肯定都会用,这个函数的功能就是将列表、字典等可迭代对象中的元素一一取出,然后对其进行处理,处理的方法可以是自定义的函数。那么这里自定义的函数就是匿名函数lanbda。

lambda最简单的理解就是可以看成return,i%2==0,return i。(这种理解是较为片面的)这样是不是就更好理解了呢?

再看一个新的例题:

使用一个匿名函数,使列表中小于 10 的元素全部剔除。
输入:
list_0 = [-1, 42, 66, 3, -32, 100, 5]
输出:
[42, 66, 100]

按照我们上面的理解,将lambda看做return:

i >=10,return i ------->lambda i : i >= 10

list_0 = [-1, 42, 66, 3, -32, 100, 5]
list_1 = list(filter(lambda i : i >= 10,list_0))
print(list_1)

如果只有一个参数,这样看是没问题的,但理解上其实也是片面的。

但是当lambda传入多个参数时,将其看作为return是有局限性的。

例如:

fun = lambda x ,y ,z : x + y + z
fun(1,2,3)

此时的结果为6。正确的看法应该是这样:x ,y ,z 是传入的三个参数,x + y + z是表达式,也是函数体,返回的值就是整个的函数体,也就是x + y + z。

lambda表达式会使程序更加的简洁,合理利用lamda表达式是称为python高手的必经之路。

欢迎批评指正!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值