[Python] Reduce Function
在 Python 3.x 中,reduce 被移至 funtools
模組,所以如果要使用,就要先 import:
from functools import reduce
Reduce 最常看到的範例介紹就是加總:
a = reduce(lambda x, y: x + y, [47, 11, 42, 13])
# a: 113
再來就是取最大值:
f = lambda a, b: a if (a > b) else b
a = reduce(f, [47, 11, 42, 102, 13])
# a: 102
但其實可以做得更多,reduce 定義:
reduce(func, iter, [initial_value])
初始值 (initial value)
有些事情需要 list 中每個元素都做一次的事情,就可以加入 initial_value 來避免第一個元素沒做到了。
例如輸入的元素,要先查值才相加:
d = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
a = reduce(lambda x, y: x + d[y], ['a', 'b', 'c', 'd', 'e'], 0)
# a: 15
如此就可以很簡單的處理了。