reduce()函數在庫functools里,如果要使用它,要從這個庫里導入。reduce函數與map函數有不一樣地方,map操作是並行操作,reduce函數是把多個參數合並的操作,也就是從多個條件簡化的結果,在計算機的算法里,大多數情況下,就是為了簡單化。比如識別圖像是否是一只貓,那么就是從眾多的像素里提煉出來一個判斷:是或否。可能是幾百萬個像素,就只出來一個結果。在GOOGLE大規模集群里,就是利用這個思想,把前面並行處理的操作叫做map,並行處理之后的結果,就需要簡化,歸類,把這個簡化和歸類的過程就叫做reduce。由於reduce只能在一台主機上操作,並不能分布式地處理,但是reduce處理的是map結果,那么意味着這些結果已經非常簡單,數據量大大減小,處理起來就非常快。因此可以把mapreduce過程叫做分析歸納的過程。
看一下面reduce()的例子:
Python 2 中的 reduce 可以直接拿來用;
Python 3 中的 reduce 在 funtools 中。
from functools import reduce result = reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) print(result)