python中匿名函数lambda与他的好朋友filter,sorted,map,reduce

lambda 就是匿名函数,简单来说就是定义函数的一种方式,但是是用来定义逻辑简单函数的
在Python中,lambda的语法如下:
lambda argument_list: expression
argument_list:是一个可以容纳任意数据类型的参数列表
expression:是一个关于参数的表达式,将前面的argument_list中每个元素取出来,作为入参进行处理
lambda的输入为argument_list的参数,输出为expression的结果即为该函数的return值
在实际中,根据这个lambda函数应用场景的不同,可以将lambda函数的用法扩展为以下几种:

1.将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。

add=lambda x, y: x+y
add(1,2)
<<<<<3

定义了加法函数lambda x, y: x+y,并将其赋值给变量add,这样变量add便成为具有加法功能的函数。然后执行,输出为3。

2.将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换(即为简单的函数重写)。

time.sleep=lambda  x=None

执行time.sleep(3)时,程序不会休眠3秒钟,而是什么都不做。

3.将lambda函数作为其他函数的返回值,返回给调用者。 函数的返回值也可以是函数。

def test_a():
    return lambda x, y: x + y

print(test_a()(2, 3))
>>>>>5

4.将lambda函数作为参数传递给其他函数。(可以理解为筛选参数的一段逻辑)
这就要说到我们经常使用的4个函数了

1.filter函数:对入参分别执行定义的lambda函数,返回值为符合逻辑的***入参***

filter(function, sequence):对sequence中的item依次执行 function(item),将执行结果为True的item组成一个List、String、Tuple(取决于sequence的类型)返回

filter(lambda x: x % 3 == 0, [1, 2, 3])
>>>>>[3]

2.map函数:对入参分别执行定义的lambda函数,返回值为符合逻辑的***结果***

map(function, sequence) :对sequence中的item依次执行function(item),见执行结果组成一个List返回

map(lambda x: x+1, [1, 2, 3])
>>>>[2, 3, 4]

3.reduce函数:对入参列表(至少有2个元素)中两两相邻元素执行定义的lambda函数,返回值为最后的***结果***
reduce(function, sequence[, initial]):对sequence中的item顺序迭代调用 function,如果有 initial,还可以作为初始值调用
首先注意下现在python3.x reduce使用需要先导入 from functools import reduce

from functools import reduce
reduce(lambda x, y : x+y, range(1,4)) #返回 6 = 1+2+3
>>>>6
reduce(lambda x, y : x+y, range(1,4), 10) #返回 16 = 1+2+3 (+10)
>>>>16

4.sorted函数:对入参分别执行定义的lambda函数,返回值为符合逻辑的***入参***,且按照升序排列
sorted(sequence,key=function):对sequence中的item依次执行function,且按照执行后结果,入参进行升序排列

sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))
>>>>[5, 4, 6, 3, 7, 2, 8, 1, 9]

以上即为我对于lambda函数的总结
不过现在pep8已经不建议使用lambda,而是推荐使用def去定义一个函数
因为它影响了代码可读性的基本原则!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值