溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

函數(shù)式編程 map,reduce,filter,lambda

發(fā)布時(shí)間:2020-06-27 17:19:01 來(lái)源:網(wǎng)絡(luò) 閱讀:1605 作者:io123 欄目:開(kāi)發(fā)技術(shù)

原型:map(function, sequence),作用是將一個(gè)列表映射到另一個(gè)列表


map()函數(shù)接收兩個(gè)參數(shù),一個(gè)是函數(shù),一個(gè)是Iterable,

map將傳入的函數(shù)依次作用到序列的每個(gè)元素,并把結(jié)果作為新的Iterator返回。


def f(x):

    y = x * x

    return y



r = map(f, range(10))

print(r)

print(list(r))

print(list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])))



原型:reduce(function, sequence, startValue),作用是將一個(gè)列表歸納為一個(gè)輸出


reduce把一個(gè)函數(shù)作用在一個(gè)序列[x1, x2, x3, ...]上,這個(gè)函數(shù)必須接收兩個(gè)參數(shù),

reduce把結(jié)果繼續(xù)和序列的下一個(gè)元素做累積計(jì)算,其效果就是:


reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)


from functools import reduce

def add(x, y):

    z = x + y

    print("{0}+{1}={2}".format(x, y, z))

    return z


print(reduce(add, range(10)))



原型:filter(function, sequence),作用是按照所定義的函數(shù)過(guò)濾掉列表中的一些元素,

使用方法:


def f2(x):


    return x%2 != 0


list(filter(f2, range(10)))


Out[3]: [1, 3, 5, 7, 9]


記?。哼@里的function必須返回布爾值。



原型:lambda <參數(shù)>: 函數(shù)體,隱函數(shù),定義一些簡(jiǎn)單的操作,

使用方法:


f3 = lambda x: x**2


f3(2)


Out[10]: 4


還可以結(jié)合map、reduce、filter來(lái)使用,如:


list(map(f3,range(10)))


Out[11]: [1, 4, 9, 16, 25, 36, 49, 64, 81]


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI