设为首页 收藏本站
查看: 785|回复: 0

[经验分享] 教为学:Python学习之路(五):map reduce学习

[复制链接]

尚未签到

发表于 2015-4-25 11:41:16 | 显示全部楼层 |阅读模式
教为学:Python学习之路(五):map reduce学习
前言
  昨天的博客竟然被首页下架了,虽然水了点,总觉得可以查看帮助解决的内容,不值得花太多的功夫。
  说到map reduce,第一反应是Hadoop的map reduce函数编程。
  不过我们这里要讲的python,有时间可以写写Hadoop的map reduce。
Lamdba函数
  要了解map reduce,首先得了解Lamdba函数,Lamdba函数顾名思义就是匿名函数。园子里很多时候关于c#和java之争的时候,匿名函数都会作为c#的一个优点陈列在前,某种意义上,这是对匿名函数能力的认可。Java在最新版本中也计划把匿名函数给加进来,同样也是对匿名函数的认可。
  所谓匿名函数就是没有名字的函数,没有名字的函数怎么调用。
  正常的函数及其调用:


  • def f(x):

  •     return 2*x

  • print f(3)

  • #结果

  • 6
  F是函数名。
  F(3)是调用函数。
  不正常函数(匿名函数)及其调用:


  • g = lambda x:x*2

  • print g(3)

  • #结果

  • 6
  G算什么?
  好像还是函数名。
  那我们来个更彻底的。


  • print (lambda x:x*2)(3)

  • #结果

  • 6
  连f和g都彻底没了。
  这东西有什么用?
Map函数
  所有的函数,我先上的是这么句话。


  • help(map)

  • #结果

  • map(...)

  •     map(function, sequence[, sequence, ...]) -> list


  •     Return a list of the results of applying the function to the items of

  •     the argument sequence(s). If more than one sequence is given, the

  •     function is called with an argument list consisting of the corresponding

  •     item of each sequence, substituting None for missing values when not all

  •     sequences have the same length. If the function is None, return a list of

  •     the items of the sequence (or a list of tuples if more than one sequence).
  看了这个帮助,大家就应该清楚,匿名函数这个东西用在哪里吧!
  上个例子再解释这个函数:


  • print map(lambda x:x*2,[1,2,3,4])

  • #结果

  • [2, 4, 6, 8]
  函数参数是一个函数,然后把后面的序列里面的值一个个传入这个函数,最后返回一个列表。
Reduce函数
  国际惯例:


  • help(reduce)

  • #结果

  • reduce(...)

  •     reduce(function, sequence[, initial]) -> value


  •     Apply a function of two arguments cumulatively to the items of a sequence,

  •     from left to right, so as to reduce the sequence to a single value.

  •     For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates

  •     ((((1+2)+3)+4)+5). If initial is present, it is placed before the items

  •     of the sequence in the calculation, and serves as a default when the

  •     sequence is empty.
  这次的帮助还有个小例子,那么,我们就运行一下这个小例子吧。


  • print reduce(lambda x,y:x+y,[1,2,3,4,5])

  • #结果

  • 15
  第一个参数函数必须有两个参数,不然,这东西玩不下去了。
  把序列中的第一个和第二个元素作为参数传递给函数,然后把返回值和第三个元素传递给函数,然后把返回值和第四个元素传递给参数,以此类推,其实上面的结果是((((1+2)+3)+4)+5)
Filter函数
  继续国际惯例:


  • help(filter)

  • #结果

  • filter(...)

  •     filter(function or None, sequence) -> list, tuple, or string


  •     Return those items of sequence for which function(item) is true. If

  •     function is None, return the items that are true. If sequence is a tuple

  •     or string, return the same type, else return a list.
  再上例子:


  • print filter(lambda x:x%2==1,[1,2,3,4])

  • 结果

  • [1, 3]
  人如其名,过滤器,把满足要求的序列过滤出来。
  第一个参数还是个函数,不过相比其他几个,这次可以为none。
  函数只能返回布尔值,作为判断条件。
  也就是说,序列里面满足函数判断条件的值全部返回出来。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-60551-1-1.html 上篇帖子: Python学习笔记(5):函数 下篇帖子: 用Python脚本转换成windows的可执行程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表