国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python reduce 函數使用詳解

2020-02-16 10:56:41
字體:
來源:轉載
供稿:網友

reduce() 函數在 python 2 是內置函數, 從python 3 開始移到了 functools 模塊。

官方文檔是這樣介紹的

reduce(...)reduce(function, sequence[, initial]) -> valueApply a function of two arguments cumulatively to the items of a sequence,from left to right, so as to reduce the sequence to a single value.For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates((((1+2)+3)+4)+5). If initial is present, it is placed before the itemsof the sequence in the calculation, and serves as a default when thesequence is empty.

從左到右對一個序列的項累計地應用有兩個參數的函數,以此合并序列到一個單一值。

例如,reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])  計算的就是((((1+2)+3)+4)+5)。

如果提供了 initial 參數,計算時它將被放在序列的所有項前面,如果序列是空的,它也就是計算的默認結果值了

嗯, 這個文檔其實不好理解。看了還是不懂。 序列 其實就是python中 tuple  list  dictionary string  以及其他可迭代物,別的編程語言可能有數組。

reduce 有 三個參數

function 有兩個參數的函數, 必需參數
sequence tuple ,list ,dictionary, string等可迭代物,必需參數
initial 初始值, 可選參數

reduce的工作過程是 :在迭代sequence(tuple ,list ,dictionary, string等可迭代物)的過程中,首先把 前兩個元素傳給 函數參數,函數加工后,然后把得到的結果和第三個元素作為兩個參數傳給函數參數, 函數加工后得到的結果又和第四個元素作為兩個參數傳給函數參數,依次類推。 如果傳入了 initial 值, 那么首先傳的就不是 sequence 的第一個和第二個元素,而是 initial值和 第一個元素。經過這樣的累計計算之后合并序列到一個單一返回值

 reduce 代碼舉例,使用REPL演示

>>> def add(x, y):...   return x+y...>>> from functools import reduce>>> reduce(add, [1,2,3,4])10>>>

上面這段 reduce 代碼,其實就相當于 1 + 2 + 3 + 4 = 10, 如果把加號改成乘號, 就成了階乘了
當然 僅僅是求和的話還有更簡單的方法,如下

>>> sum([1,2,3,4])10>>>

很多教程只講了一個加法求和,太簡單了,對新手加深理解還不夠。下面講點更深入的例子

還可以把一個整數列表拼成整數,如下

>>> from functools import reduce>>> reduce(lambda x, y: x * 10 + y, [1 , 2, 3, 4, 5])12345>>>

對一個復雜的sequence使用reduce ,看下面代碼,更多的代碼不再使用REPL, 使用編輯器編寫

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和硕县| 大竹县| 马尔康县| 安多县| 迁西县| 呼图壁县| 雷州市| 闽侯县| 婺源县| 平舆县| 铁岭县| 达日县| 资溪县| 乐至县| 镇康县| 承德市| 北川| 长治县| 镇平县| 定南县| 武夷山市| 虞城县| 二连浩特市| 明水县| 偏关县| 高阳县| 琼结县| 海林市| 甘孜| 青浦区| 潍坊市| 温宿县| 三亚市| 偏关县| 淮滨县| 新安县| 威海市| 柘荣县| 依兰县| 江华| 康乐县|