python中reduce 函式

2022-06-23 23:21:12 字數 947 閱讀 3628

reduce()函式也是python內建的一個高階函式。reduce()函式接收的引數和 map()類似,一個函式 f,一個list,但行為和 map()不同,reduce()傳入的函式 f 必須接收兩個引數,reduce()對list的每個元素反覆呼叫函式f,並返回最終結果值。

例如,編寫一個f函式,接收x和y,返回x和y的和:

def

f(x, y):

return x + y

呼叫 reduce(f, [1, 3, 5, 7, 9])時,reduce函式將做如下計算:

先計算頭兩個元素:f(1, 3),結果為4;

再把結果和第3個元素計算:f(4, 5),結果為9;

再把結果和第4個元素計算:f(9, 7),結果為16;

再把結果和第5個元素計算:f(16, 9),結果為25;

由於沒有更多的元素了,計算結束,返回結果25。

上述計算實際上是對 list 的所有元素求和。雖然python內建了求和函式sum(),但是,利用reduce()求和也很簡單。

reduce()還可以接收第3個可選引數,作為計算的初始值。如果把初始值設為100,計算:

reduce(f, [1, 3, 5, 7, 9], 100)

結果將變為125,因為第一輪計算是:

計算初始值和第一個元素:f(100, 1),結果為101。

練習:python內建了求和函式sum(),但沒有求積的函式,請利用reduce()來求積:

輸入:[2, 4, 5, 7, 12]

輸出:2*4*5*7*12的結果

方法:

def

prod(x, y):

return x*y

print reduce(prod, [2, 4, 5, 7, 12])

結果:

>>>3360

python中的reduce函式

在python3中,內建函式中已經沒有reduce了。要使用reduce,需要從functools模組裡引入 可以看到,reduce有三個引...

JS中reduce方法

1 reduce 方法接收一個函式作為累加器,陣列中的每個值 從左到右 開始縮減,最終計算為一個值。 2 reduce 可以作為一個高階函式,用於函式的 compose 3 reduce 對於空陣列是不會執行 函式的 支援谷歌 火狐 ie9以上等主流瀏覽器 語法array reduce functi...

python魔法方法 reduce

當定義擴充套件型別時 也就是使用python的c語言api實現的型別 ,如果你想pickle它們,你必須告訴python如何pickle它們。 reduce 被定義之後,當物件被pickle時就會被呼叫。它要麼返回一個代表全域性名稱的字串,pyhton會查詢它並pickle,要麼返回一個元組。這個元組包...