lambda 為關鍵字。filter,map,reduce為內置函數。
lambda:實現python中單行最小函數。
g = lambda x: x * 2
#相當于
def g(x):return x*2
print(g(3))# 6 注意:這里直接g(3)可以執行,但沒有輸出的,前面的print不能少
Map函數
map()函數接收兩個參數,一個是函數,一個是序列,map將傳入的函數依次作用到序列的每個元素,并把結果作為新的list返回。?
舉例說明 :
比如我們有一個函數f(x)=x2,要把這個函數作用在一個list [1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()實現如下:??
現在,我們用Python代碼實現:
>>> def f(x):
... return x * x
...
>>> map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]
Reduce函數?
reduce把一個函數作用在一個序列[x1, x2, x3…]上,這個函數必須接收兩個參數,reduce把結果繼續和序列的下一個元素做累積計算,其效果就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
比方說對一個序列求和,就可以用reduce實現:
>>> def add(x, y):
... return x + y
...
>>> reduce(add, [1, 3, 5, 7, 9])
25
Filter函數?
Python內建的filter()函數用于過濾序列。和map()類似,filter()也接收一個函數和一個序列。和map()不同的是,filter()把傳入的函數依次作用于每個元素,然后根據返回值是True還是False決定保留還是丟棄該元素。
True保留,False丟棄?
例如,在一個list中,刪掉偶數,只保留奇數,可以這么寫:
def is_odd(n):return n % 2 == 1filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])# 結果: [1, 5, 9, 15]
可見用filter()這個高階函數,關鍵在于正確實現一個“篩選”函數。