15、lambda表达式与map reduce filter

匿名函数

匿名函数只是在需要调用时使用一次,所以不需要有名字
lambda 参数1,参数2,...: expression(返回值)
匿名函数的应用

salaries={
    'siry':3000,
    'tom':7000,
    'lili':10000,
    'jack':2000
}

# 需求:计算出工资最高的人
print(max(salaries, key=lambda k: salaries[k]))

map函数

map函数会对可迭代对象的每个元素进行处理

array = [1, 2, 3, 4, 5]
res = map(lambda x: x ** 2, array)
print(res)      # <map object at 0x0000019E28C014F0>
print(list(res))    # [1, 4, 9, 16, 25]

reduce函数

1 没有初始值,reduce函数会先迭代一次array得到的值作为初始值,作为第一个值数传给x,然后继续迭代一次array得到的值作为第二个值传给y,运算的结果为3
2 将上一次reduce运算的结果作为第一个值传给x,然后迭代一次array得到的结果作为第二个值传给y,依次类推,知道迭代完array的所有元素,得到最终的结果15

# reduce在python2中是内置函数,在python3中则被集成到模块functools中,需要导入才能使用
>>> from functools import reduce 
>>> res=reduce(lambda x,y:x+y,array)
>>> res
15

作者:程序员Egon老湿
链接:https://zhuanlan.zhihu.com/p/109125933
来源:知乎

可以给reduce传入第三个参数,作为初始值

filter函数

filter函数可以对可迭代对象进行过滤擦欧总
res=filter(lambda x:x>3,array)

posted @ 2021-08-15 15:31  晴天々⊙雨天  阅读(119)  评论(0)    收藏  举报