摘要:[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()是如何作用的: