2018-10-23
閱讀量:
998
python的map/reduce函數(shù)
python 的map與reduce函數(shù)怎么用?跟Hadoop的mapreduce框架有關(guān)系嗎?
python的map與reduce 與 Hadoop的mapreduce的思想是一樣的都是參照了谷歌的mapreduce論文思想。
1、map()函數(shù)
map()
函數(shù)接收兩個參數(shù),一個是函數(shù),一個是Iterable
,map
將傳入的函數(shù)依次作用到序列的每個元素,并把結(jié)果作為新的Iterator
返回。
>>> def f(x):
... return x * x
...
>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]
map()
傳入的第一個參數(shù)是f
,即函數(shù)對象本身。由于結(jié)果r
是一個Iterator
,Iterator
是惰性序列,因此通過list()
函數(shù)讓它把整個序列都計算出來并返回一個list。
2、reduce()函數(shù)
reduce
把一個函數(shù)作用在一個序列[x1, x2, x3, ...]
上,這個函數(shù)必須接收兩個參數(shù),reduce
把結(jié)果繼續(xù)和序列的下一個元素做累積計算,其效果就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
比方說對一個序列求和,就可以用reduce
實現(xiàn):
>>> from functools import reduce
>>> def add(x, y):
... return x + y
...
>>> reduce(add, [1, 3, 5, 7, 9])
25






評論(0)


暫無數(shù)據(jù)
推薦帖子
0條評論
0條評論
0條評論