在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...