Python中的map和reduce

<strong>對可迭代函數(shù)'iterable'中的每一個元素應(yīng)用‘function’方法,將結(jié)果作為list返回。python中的map函數(shù)應(yīng)用于每一個可迭代的項,返回的是一個結(jié)果list。如果有其他的可迭代參數(shù)傳進(jìn)來,map函數(shù)則會把每一個參數(shù)都以相應(yīng)的處理函數(shù)進(jìn)行迭代處理。map()函數(shù)接收兩個參數(shù),一個是函數(shù),一個是序列,map將傳入的函數(shù)依次作用到序列的每個元素,并把結(jié)果作為新的list返回。<strong>

<h1>一 map函數(shù) <h1>

例子

a = list(map(lambda x: x * x,[1,3,5,6]))
print(a)

輸出

[1, 9, 25, 36]

作用:map第一個參數(shù)為一個函數(shù)對象,之后的為一個序列。將序列的每個元素依次經(jīng)過函數(shù)加工,在py3中得到一個循環(huán)對象,可用list來查看結(jié)果.

i = [1,2,3,4]
j = [3,6,8,9]
print(list(map(lambda i,j : i + j,i,j)))

輸出

[4, 8, 11, 13]

<h1>二 reduce函數(shù)<h1>

<strong>
reduce()函數(shù)是Python內(nèi)置的一個高階函數(shù).
reduce()函數(shù)接收的參數(shù),一個函數(shù) f,一個list,但行為和 map()不同,reduce()傳入的函數(shù) f 必須接收兩個參數(shù),reduce()對list的每個元素反復(fù)調(diào)用函數(shù)f,并返回最終結(jié)果值。
<strong>

例如,編寫一個f函數(shù),接收x和y,返回x和y的和:

def f(x, y):
        return x + y

調(diào)用reduce(f,[1,3,5,7])時,函數(shù)執(zhí)行如下:

先計算頭兩個元素:f(1, 3),結(jié)果為4;
    再把結(jié)果和第3個元素計算:f(4, 5),結(jié)果為9;
    再把結(jié)果和第4個元素計算:f(9, 7),結(jié)果為16;
    再把結(jié)果和第5個元素計算:f(16, 9),結(jié)果為25;
    由于沒有更多的元素了,計算結(jié)束,返回結(jié)果25。

reduce還可以接受三個參數(shù),作為計算的初始值。

reduce(f,[1,3,5,7],100)  //返回116
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容