Python內(nèi)建了map()和reduce()函數(shù)闯参。
1镊尺、map()函數(shù)
map()函數(shù)接收兩個(gè)參數(shù),一個(gè)是函數(shù)尖滚,一個(gè)是Iterable喉刘,map將傳入的函數(shù)依次作用到序列的每個(gè)元素,并把結(jié)果作為新的Iterator返回漆弄。
舉例說(shuō)明睦裳,比如我們有一個(gè)函數(shù)f(x)=x2,要把這個(gè)函數(shù)作用在一個(gè)list [1, 2, 3, 4, 5, 6, 7, 8, 9]上撼唾,就可以用map()實(shí)現(xiàn)如下:
l = [1,3,4,-3,-5,2,-7] l1 = map(abs, l) print(l) for x in l1: print(x)
結(jié)果:
[1, 3, 4, -3, -5, 2, -7] 1 3 4 3 5 2 7 [Finished in 0.1s]
2廉邑、reduce()函數(shù)
reduce的用法。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)
比方說(shuō)對(duì)一個(gè)序列求和渤愁,就可以用reduce實(shí)現(xiàn):
from functools import reduce def add(x, y): return x + y r = reduce(add, [1,2,3,4,5]) print(r)
結(jié)果:
15 [Finished in 0.2s]