专注于Python 2019-07-04
Map、Reduce 是什么
Python 中的 map 和 reduce
如果我们把 MapReduce 拆开看,就是两个单词 map 和 reduce。在本书中,map 翻译为 “映射”,reduce 翻译为“归约” 。这两个单词在有的编程语言中属于内置的两个函数。我们 以 Python 语言举例,该语言中 map、reduce 属于内置函数。先看一下 map 函数的用法,如
第一行表示定义一个列表变量,有 5 个元素。第二行是调用了内置的 map 函数,该函数接收两个参数,第一个是匿名函数;第二个是刚才定义的列表变量。匿名函数 有一个形参是 x,返回值就是 x+3 的结果,相当于返回对参数+3 返回。m 表示 map 运行后 的记过。第三行是打印输出 m。第四行是输出的内容。 从例子中可以看到,map 函数是把第一个形参函数作用于每一个列表元素。列表元素有 5 个,那么匿名函数就会被调用 5 次,每次调用把元素作为匿名函数的形参传入,最终结果 是还是含有 5 个元素的列表。
下面再看一下 reduce 函数
在上图中,第一句是加载函数所在的包,类似于 java 中的 import 语句。第二句是定义 一个含有 5 个元素的列表变量。第三句是调用 reduce 函数。这个函数与 map 函数类似,也 是接收两个参数,第一个参数是定义的匿名函数,第二个参数是刚才定义的列表变量。匿名 函数有两个形参 x 和 y,返回值就是 x+y 运算的结果,s 表示运算后的结果。第四行语句表 示打印输出 s。第五行是输出的结果。 从例子中可以看出,匿名函数的形参有两个,分别是 x 和 y,取值来自于第二个形参 a
中的每个元素。通过匿名函数对 a 中的元素进行聚合,把 5 个元素通过加法运算聚合成一个 结果。这就是 reduce 函数。