<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