文档章节

## 人生苦短我用python[0x07] map() & reduce() ##

ali安东尼
 ali安东尼
发布于 2017/07/14 14:54
字数 405
阅读 2
收藏 0

<font color=red>文章内容为原创,欢迎转载请注明出处</font>

作者: EflyPro->晦明禅师

MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。 概念“Map(映射)”和“Reduce(归纳)”,及他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。--维基百科

今天我们来看看python提供的map()和reduce()函数,可以帮助大家理解MapReduce的思想,用python代码理解还是挺直观的。

map()

map函数是把右边的输入列表元素作为左边函数的参数传入,并把函数返回值组织成对应的list结果返回

>>> def fx(x):
...     return x*x
... 
>>> map(fx, [1,2,3,4,5])
[1, 4, 9, 16, 25]
#实现对列表值的平方计算

reduce()

reduce函数是也是接收2个参数,左边是函数,右边是列表,把右边列表的前面两个元素作为函数参数传入并把返回值继续和列表的第3个元素进行再次函数调用,如此类推一直到全部处理完为止,下面是一个比较形象的公式。

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

再用一个实际例子就比较清晰了

>>> def fx(x, y):
...     return x + y
... 
>>> reduce(fx, [1,2,3,4,5])
15
#实现从1-5的数列求和
#上面的例子转换成一下每一步就是
# 1  fx(1,2) = 3
# 2  fx(3,3) = 6
# 3  fx(6,4) = 10
# 4  fx(10,5) = 15

由睿江云提供,想了解更多,请登陆www.eflycloud.com

© 著作权归作者所有

共有 人打赏支持
ali安东尼
粉丝 3
博文 192
码字总数 173101
作品 0
广州
私信 提问
Python进阶系列连载(13)——Python内置高阶函数filter(下)

前言 进阶部分连载继续~ 如果还没看过我的入门连载部分,先看: https://ask.hellobi.com/blog/wangdawei/10288 当然,小编的免费入门课程已经有咯,看过连载的朋友可以看看视频再快速梳理一...

ID王大伟
2018/04/28
0
0
大佬程序员给小白整理出的详细Python爬虫学习路线,机不可失!

Python是一种面向对象、直译式计算机程序设计语言,由Guido van Rossum于1989年底发明。由于他简单、易学、免费开源、可移植性、可扩展性等特点,Python又被称之为胶水语言。下图为主要程序语...

糖宝lsh
01/16
0
0
资源 | Python技巧 101:这17个骚操作你都Ok吗

  选自Hackernoon   作者:Gautham Santhosh   机器之心编译      Python 是一门非常优美的语言,其简洁易用令人不得不感概人生苦短。在本文中,作者 Gautham Santhosh 带我们回顾...

机器之心
2018/08/19
0
0
webpy【第一帖】

人生苦短,我用python 讨论python web开发的点点滴滴

码上的生活
2015/01/02
2
0
阿里云全球十四个节点评测分析及服务器地域选择攻略

摘要: 课程学习:零基础入门学习Python - 阿里云大学 上一期,为大家介绍了Python的入门知识——Python语言介绍、常用操作符、分支和循环。(【人生苦短,我用Python】Python免费精品课连载...

gongzuoqwe123
2017/07/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Nextjs+React非页面组件SSR渲染

@随风溜达的向日葵 Nextjs Nextjs是React生态中非常受欢迎的SSR(server side render——服务端渲染)框架,只需要几个步骤就可以搭建一个支持SSR的工程(_Nextjs_的快速搭建见Next.js入门)...

随风溜达的向日葵
48分钟前
0
0
如何在 Linux 系统查询机器最近重启时间

在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名...

来来来来来
今天
3
0
Redis协议是什么样的

前言 我们用过很多redis的客户端,有没有相过自己撸一个redis客户端? 其实很简单,基于socket,监听6379端口,解析数据就可以了。 redis协议 解析数据的过程主要依赖于redis的协议了。 我们...

春哥大魔王的博客
今天
6
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxCool
今天
4
0
携程Apollo统一配置中心的搭建和使用(java)

一.Apollo配置中心介绍 1、What is Apollo 1.1 Apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到...

morpheusWB
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部