前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python基础----map和reduce

python基础----map和reduce

作者头像
GavinZhou
发布2018-01-02 15:35:49
6210
发布2018-01-02 15:35:49
举报

map和reduce

Map简单来说就是:一个映射函数就是对一些独立元素组成的概念上的列表的每一个元素进行指定的操作 Reduce简单来说就是:对一个列表的元素进行适当的合并

举两个小例子: (1)现在有一个python的list假设为A: A = [1,4,2,5,6,8,3],现在需要你对它们进行求和; 当然我们使用简单的sum()就可以搞定,不过我想说的是map和reduce的概念;我们知道求和的话,同时最简单的就是对两个数字进行add,所以可以这样: add(1,add(4,add(2,add(5,add(6,add(8,3))))) 这就是最简单的reduce操作,程序如下:

 def add(x,y):
    return x+y
reduce(add, [1,4,2,5,6,8,3])

返回29,操作正确

(2)对(1)中的A返回每个元素的平方; 当然你可以类似这样:

A = [1, 4, 3, 5, 6, 8, 3]
B = [x * x for x in A]

完全没问题,但是还可以这样做:

def f(x):
    return x*x
map(f,[1, 4, 3, 5, 6, 8, 3]) 

输出为:[1, 16, 9, 25, 36, 64, 9] 这就是最简单的map的思想啦

一个简单的小例子

将字符串转化为int值,不使用内置的int函数 使用map和reduce的代码如下:

def str2int(s):
   def fn(x, y):
       return x * 10 + y
   def char2num(s):
      return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5,\
               '6': 6, '7': 7, '8': 8, '9': 9}[s]
   return reduce(fn, map(char2num, s))

思路解析: (1)将获得传入字符串做成一个list; (2)使用map对list中的每个元素进行一一映射; (3)使用reduce进行combine(x*10+y)获得最终的结果值

测试:

>> str2int('1342')
>> 1342
>> str2int('1234567')
>> 1234567
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-12-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • map和reduce
  • 一个简单的小例子
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档