reduce() 函式會對引數序列中元素進行累積。
python3.x reduce() 已經被移到 functools 模組裡,如果我們要使用,需要引入 functools 模組來呼叫 reduce() 函式:
from functools import reduce
reduce() 函式語法如下:
reduce(function, iterable[, initializer])
function – 函式,有兩個引數其中,function引數是乙個有兩個引數的函式,reduce依次從資料集合中取乙個元素和上一次呼叫function的結果做引數,再次呼叫function。iterable – 可迭代物件
initializer – 可選,初始引數
返回值為函式計算結果。
注意:第一次呼叫function時,如果提供initializer引數,會以資料集合中的第乙個元素和initializer作為引數呼叫function,否則會以資料集合中的前兩個元素做引數呼叫function。
比如有列表[1,2,3,4,5],通過reduce實現列表元素之和。
#!/usr/bin/python
from functools import reduce
# 定義兩數相加函式
def add(x, y)
:return x + y
# 計算列表和:1+2+3+4+5
sum1 = reduce(add, [1,2,3,4,5]
)# 使用 lambda 匿名函式
sum2 = reduce(lambda x, y: x+y, [1,2,3,4,5]
) print(sum1)
#輸出15
print(sum2)
#輸出15
以上為無初始化initializer引數的情況,下面的示例為有初始化引數,計算過程如下:
#!/usr/bin/python
from functools import reduce
l=[1,2,3,4]
print(reduce(lambda x,y: x+y, l,5))
# initializer為5
#-->5+1=6 #第一次計算為 初始值 + 資料集合的第乙個值
#-->6+2=8
#-->8+3=11
#-->11+4=15
Python reduce 函式的用法小結
reduce 函式也是python內建的乙個高階函式。reduce 格式 reduce func,seq init reduce 函式即為化簡函式,它的執行過程為 每一次迭代,都將上一次的迭代結果 注 第一次為init元素,如果沒有指定init則為seq的第乙個元素 與下乙個元素一同傳入二元func...
Python reduce原來是這樣用的
官方解釋 這樣看來,其實下面的 定義是有一點問題,我們在程式中呼叫這段 reduce lambda x,y x y,1,2,3,4,5 得到的結果為16,而正確的結果為15,問題在於如果集合不是以0開始,那麼按照如下 第一次呼叫x 1,即第乙個元素,y也是等於1,也是第乙個元素,而正確的y應該是2。...
函式的用法 Excel函式TREND函式的用法
trend函式是乙個線性趨勢的 函式,在已知y值 x值的條件下,x對應的y值 trend共有4個引數,三個必選引數,乙個可選引數 同樣的一組資料第四引數不同,結果也是有區別的 灰色曲線是由第四引數為false時得到的結果生成的曲線。通過斜率與截距函式我們計算出這兩條曲線的斜率與截距,可以看出,第四引...