[Python] 內建函式filter, map, reduce

摘要:[Python] 內建函式filter, map, reduce

filter, map, reduce 都是針對集合物件處理的特殊函式。

可有助於python的資料處理以及程式簡化。

 

filter()

Format: filter(function, sequence)

以傳入的boolean function作為條件函式,iterate所有的sequence的元素並收集 function(元素) 為True的元素到一個List。

請參考下面例子:

>>> def fn(x):
...     return x if x > 5 else None
...
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = filter(fn, a)
>>> b
[6, 7, 8, 9]

 

map()

Format: map(function, sequence)

iterate所有的sequence的元素並將傳入的function作用於元素,最後以List作為回傳值。

請參考下面例子:

>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> def fn(x):
...     return x*2
>>> c = map(fn, a)
>>> c
[2, 4, 6, 8, 10, 12, 14, 16, 18]

 

reduce()

Format: reduce(function, sequence)

必須傳入一個binary function(具有兩個參數的函式),最後僅會回傳單一值。

reduce會依序先取出兩個元素,套入function作用後的回傳值再與List中的下一個元素一同作為參數,以此類推,直到List所有元素都被取完。

請參考下面例子:

>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> def fn(x, y):
...     return x+y
>>> d = reduce(fn, a)
>>> d
45

下面的圖片輔助說明上面範例程式中的reduce()是如何作用的: