15、lambda表示式與map reduce filter
阿新 • • 發佈:2021-08-15
匿名函式
匿名函式只是在需要呼叫時使用一次,所以不需要有名字
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)