1. 程式人生 > >python中reduce函式的用法

python中reduce函式的用法

1.說明

reduce:將一個可以迭代的物件應用到兩個帶有引數的方法上,我們稱這個方法為fun,遍歷這個可迭代的物件,將其中元素依次作為fun的引數,但是這個函式有兩個引數,那些作為引數呢?

reduce(fun,sequence[,initial_val])

reduce函式有三個引數,第一個引數就是作用函式,第二個函式就是可迭代的物件,第三個是迭代初始值。
如果存在第三個引數,也就是有初始迭代物件,那麼 initial_val作為fun函式的第一個引數, sequence 的第一個元素作為fun的第二個引數,得到返回結果的作為下一次函式的第一個引數,sequence的第二個引數作為下一次迭代過程中的第二個引數,以此類推。
如果不存在第三個引數,那麼sequence的第一個引數作為fun函式的第一個引數,sequence的第二個引數作為fun函式第二個引數,以此類推。

2.例子

下面有幾個例子:

reduce(lambda x,y:x+y,[1,2,3,4,5])
#計算1到5的和

下面是一個統計詞頻的例子:

str="an apple a banana three apple a desk"
list=str.split(' ')
def fun(x,y):
    if y in x:
        x[y]=x[y]+1
    else:
        x[y]=1
    return x
result=reduce(fun,list,{})
#輸出結果是
>>>{'a': 2, 'apple': 2, 'three'
: 1, 'an': 1, 'desk': 1, 'banana': 1}