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)
浙公网安备 33010602011771号