map/reduce函数

map

map()函数接受两个值,一个是函数,另一个是Iterable,map将传入的函数依次作用于序列的每一个元素,并将结果作为一个新的Iterator返回。

我们想把f(x)=x2作用于一个列表[1,2,3,4,5,6,7,8,9],就可以这样做

>>> def f(x):
	return x*x
>>> res = map(f,[1,2,4,5,6,7,8,9])
>>> print(res)
<map object at 0x0000000002B34860>
>>> list(res)
[1, 4, 16, 25, 36, 49, 64, 81]

map()传入的第一个参数是f,结果res是一个Iterator,Iterator是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list。

还可以计算复杂的函数,将数字转化为字符串

>>> r = map(str,[1,2,3,4,5])
>>> list(r)
[‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘]

reduce

reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

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

把[1,2,3,4]变成整数1234,reduce就派上用场了

>>> from functools import reduce>>> def fn(x,y):
	return x*10+y
>>> reduce(fn,[1,2,3,4])
1234

有个很有意思的例子,考虑到str本身也是一个序列,我可以配合map函数将str转换成int,其实没什么卵用,因为python提供了int()函数

>>> def fn(x,y):
	return x*10+y
>>> def char_to_num(s):
	return {‘0‘: 0, ‘1‘: 1, ‘2‘: 2, ‘3‘: 3, ‘4‘: 4, ‘5‘: 5, ‘6‘: 6, ‘7‘: 7, ‘8‘: 8, ‘9‘: 9}[s]
>>> reduce(fn,map(char_to_num,‘13568‘))
13568

先用map()函数将char_to_num()作用于序列‘13568’,得到[1,3,5,6,8]这样一个Iterator对象,再利用reduce()函数处理。就实现了将str转换为int的功能。

 

时间: 2024-12-06 17:04:17

map/reduce函数的相关文章

lambda&amp;filter&amp;map&amp;reduce函数的基本使用

'''Created on 2019-03-14Author:BinzhouProject:python中lambda filter map reduce函数使用总结''' #lambda匿名函数,格式lambda x,y:x+y 表示一个函数的参数是x,y,函数实现功能是x+y #filter[function,sequence]用于过滤序列 返回迭代器对象(包含所有满足使function返回值为True的sequence值)#python2直接返回与sequence一致的数据类型(列表,元组

python之lambda,filter,map,reduce函数

g = lambda x:x+1 看一下执行的结果: g(1) >>>2 g(2) >>>3 当然,你也可以这样使用: lambda x:x+1(1) >>>2 可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为: def g(x): return x+1 非常容易理解,在这里lambda简化了函数定义的书写形式.是代码更为简洁,但是使用函数的定义方式更为直观,易理解. Python中,

python map(),reduce()函数的用法

map(function,ls): 函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回. 如: reduce(function,ls): 函数接收两个参数,一个是函数,一个是序列,reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3)

python中的map&amp;reduce

Map --映射 Reduce -- 归纳 将大数据标准化的处理 Map 拆封任务,Reduce将结果合并 这样是不是能够将很多计算机组成一台超级计算机呢? 一些问题:如果任务本身就很复杂,那么拆解任务本身就是一个很打的难题. python 在2.6 的时候 增加了 map reduce函数 例如我们可以这样写 import urllib2 urls = [ 'https://www.baidu.com', 'http://www.douban.com' ] resurt = map(urlli

【转】Map/Reduce简介

转自:http://blog.csdn.net/opennaive/article/details/7514146 1. MapReduce是干啥的 因为没找到谷歌的示意图,所以我想借用一张Hadoop项目的结构图来说明下MapReduce所处的位置,如下图. Hadoop实际上就是谷歌三宝的开源实现,Hadoop MapReduce对应Google MapReduce,HBase对应BigTable,HDFS对应GFS.HDFS(或GFS)为上层提供高效的非结构化存储服务,HBase(或Big

生动有趣地讲解Map/Reduce基本原理

Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰富,包括ZooKeeper,Pig,Chukwa,Hive,Hbase,Mahout,flume等. 这里详细分解这里面的概念让大家通过这篇文章了解到底是什么hadoop: 1.什么是Map/Reduce,看下面的各种解释: (1)MapReduce是hadoop的核心组件之一,hadoop要分布式

Hadoop简介(1):什么是Map/Reduce

看这篇文章请出去跑两圈,然后泡一壶茶,边喝茶,边看,看完你就对hadoop整体有所了解了. Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰富,包括ZooKeeper,Pig,Chukwa,Hive,Hbase,Mahout,flume等. 这里详细分解这里面的概念让大家通过这篇文章了解到底是什么hadoop: 1.什么是Map/Reduce,看

Map/Reduce工作原理

上图是论文里给出的流程图.一切都是从最上方的user program开始的,user program链接了MapReduce库,实现了最基本的Map函数和Reduce函数.图中执行的顺序都用数字标记了. 1.MapReduce库先把user program的输入文件划分为M份(M为用户定义),每一份通常有16MB到64MB,如图左方所示分成了split0~4:然后使用fork将用户进程拷贝到集群内其它机器上. 2.user program的副本中有一个称为master,其余称为worker,ma

用通俗易懂的大白话讲解Map/Reduce原理

Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰富,包括ZooKeeper,Pig,Chukwa,Hive,Hbase,Mahout,flume等. 这里详细分解这里面的概念让大家通过这篇文章了解到底是什么hadoop: 1.什么是Map/Reduce,看下面的各种解释: (1)MapReduce是hadoop的核心组件之一,hadoop要分布式