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 3.0.0.0以後, reduce已經不在built-in function裡了, 要用它就得from functools import reduce.
用途:
python中的reduce函式
python中的reduce python中的reduce內建函式是乙個二元操作函式,他用來將乙個資料集合 鍊錶,元組等 中的所有資料進行下列操作 用傳給reduce中的函式 func 必須是乙個二元操作函式 先對集合中的第1,2個資料進行操作,得到的結果再與第三個資料用func 函式運算,最後得到...
python中的reduce 函式
接收兩個引數,乙個是函式f,乙個是list,需要注意的是函式f必須接收兩個引數,reduce 對list的每個元素反覆呼叫函式f,並返回最終結果。舉個例子 def f x,y return x y print reduce f,1,3,5,7,9 執行結果 25運算過程 先計算頭兩個元素 f 1,3...
Python中的reduce函式
注 從python3.0起,reduce不再是內建函式,它在functools模組中 語法 reduce function,iterable 其中function是乙個有兩個引數輸入的函式,iterable是可迭代物件。函式功能 reduce 函式會對引數序列中元素進行累積,返回計算結果。函式將乙個...