python3中reduce函式的使用

2021-09-29 08:33:32 字數 1753 閱讀 9917

在python3中如果使用reduce需要先導入

from functools import

reduce

reduce函式,reduce函式會對引數序列中元素進行累積。

reduce函式的定義:

reduce

(function, sequence [

, initial])-

> value

function引數是乙個有兩個引數的函式,reduce依次從sequence中取乙個元素,和上一次呼叫function的結果做引數再次呼叫function。

第一次呼叫function時,如果提供initial引數,會以sequence中的第乙個元素和initial作為引數呼叫function,否則會以序列sequence中的前兩個元素做引數呼叫function。

舉例說明上面這段話的意思.比如有列表lst=[1,2,3,4],我們希望得到列表每個元素之和,**如下:

from functools import

reduce

lst=[1

,2,3

,4]print

(reduce

(lambda x,y: x+y, lst)

)

那如果我們希望是序列的乘積呢,接下來我們在看下**,下面**的意思就是列表每個元素相乘的結果

'''

'''from functools import

reduce

lst=[1

,2,3

,4]print

(reduce

(lambda x,y: x*y, lst)

)# 結果24

下面來個稍微複雜點的,注意看lambda函式的變化,

from functools import

reduce

lst=[1

,2,3

,4]print

(reduce

(lambda x,y: x*y+

1, lst)

)'''

'''#計算過程如下:

# 這個式子只有兩個引數,沒有初始化值,那麼就取列表前2項,通過lambda函式計算結果

#1*2+1=3,

#上面計算的結果在與列表第三個元素通過lambda函式計算

# 3*3+1=10

#上面計算的結果在與列表第四個元素通過lambda函式計算

# 10*4+1=41

接下來都是以此類推,可以自己增加幾個元素演示,或者換下lamda函式計算,驗證結果.

再說說有初始化值的情況, 這個時候就不是取列表的前兩項, 而是取初始值為第乙個,序列的第乙個元素為第二個元素,開始進行lambda函式的應用計算.

說的有點混亂,看**吧!

from functools import

reduce

lst=[1

,2,3

,4]print

(reduce

(lambda x,y: x+y, lst,5)

)# 5是初始值,也可以理解為第三個引數

# 計算呢過程--

>5+

1=6-

->6+

2=8-

->8+

3=11-

->11+

4=15

再學python3 五 python的內建函式

內建函式 dir 檢視變數擁有的方法 callable 檢視是否是函式 help 檢視幫助 print dir int abs add print callable print true print help int 列印進度條 可用progress bar外掛程式做 import time for...

python 的map和reduce(高階函式)

map 函式接受兩個引數,乙個是函式 f 乙個是可迭代物件iterable map將傳入的函式依次作用到序列的每個元素,並把結果作為新的迭代器iterator 返回 例如 def f x return x x r map f,1,2,3,4,5 r 是乙個迭代器 list r 將r變成list 注意...

python3中異常處理 Python3異常處理

python的異常處理機制 使用 try.except 捕獲異常 try 業務實現 except error1,error2,as e 出現異常後的處理 異常類的繼承關係 baseexception systemexit keyboardinterrupt generatorexit excepti...