1. 程式人生 > 其它 >15、lambda表示式與map reduce filter

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)