python--map()、reduce()
2018-07-25 13:12:39来源:博客园 阅读 ()
map()和reduce()是一种在处理大数据时的重要思想,在平时也可以利用。在python中内置了这两个方法,map取映射的意思,reduce取归纳的意思。
一、map()
- map(func, lsd)
参数1是函数
参数2是序列
- 功能:将传入的函数依次作用在序列中的每一个元素,并把结果作为一个新的Iterator返回。
注:可迭代对象是个惰性的列表,直接输出为一个地址,要想输出里面内容要显示的写出来,eg:print(list(res))
1 # 下面实例的目标是将列表中的字符转换为整形
2
3 def char2int(chr):
4 return {'0':0, '1':1, '2':2, '3':3}[chr] # 通过字典来返回转换后的结果
5
6 lis = ['2','1','3','0']
7 res = map(char2int, lis) # 用自己写的函数映射到每个元素上
8 res2 = map(int, lis) # 通过内置函数来实现
9 print(res) # 惰性列表,返回一个内存地址
10 print(list(res)) # 强制转换成列表
11 print(list(res2))
二、ruduce()
- reduce(func, lsd)
参数1是函数
参数2是序列
注:reduce需要引入:from functools import reduce
- 功能:一个函数作用在序列上,这个函数必须接受两个参数,reduce把结果继续和序列的下一个元素累积运算。
- eg: reduce(f, [a,b,c,d]) 等价于f(f(f(a,b),c),d) ----f是一个接受两个参数的函数。
1 # 实现一个累加
2
3 from functools import reduce
4 # 自定义的两输入加法
5 def Sum(a,b):
6 return a + b
7 lis = [1,2,3,4,5]
8
9 res = reduce(Sum, lis) # 对序列中的元素类似递归的加进去
10 print(res) # 由于reduce返回的只是一个结果,不必考虑map中提到的问题
三、综合
map、reduce经常是配合起来使用的,下面有一个简单的例子,例子旨在介绍如何使用,无需关心是否实用。
1 # 这段代码是想要将一段数字的字符串转换为整型
2
3 from functools import reduce # 引入reduce方法
4
5 def str2int(str):
6 # reduce中使用的函数,将map转换后的列表中元素,生成按顺序排列的整型数字
7 def fc(x,y):
8 return x * 10 + y
9 # 把字符串中每个元素转换成对应的整型数字,返回一个整型的列表
10 def fs(chr):
11 return {'0':0, '1':1, '2':2, '3':3,'4':4, '5':5, '6':6, '7':7, '8':8, '9':9}[chr]
12 return reduce(fc, map(fs,list(str))) # 先使用map函数把每个元素转成数字,然后用reduce函数把数字拼接起来
13 res = str2int('2314233123')
14 print(res)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:Python 函数及其应用
- python学习-30 总结 2019-07-24
- python学习-29 map函数-filter函数 2019-07-24
- Python连载16-reduce函数&filter函数 2019-07-24
- 【Python实践-9】将字符串转化为浮点型 2019-05-04
- lambda表达式,map函数 2019-04-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash