map()和reduce()是一种在处理大数据时的重要思想,在平时也能够利用。在python中内置了这两个方法,map取映射的意思,reduce取概括的意思。python
参数1是函数
参数2是序列函数
注:可迭代对象是个惰性的列表,直接输出为一个地址,要想输出里面内容要显示的写出来,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))
参数1是函数
参数2是序列spa
注:reduce须要引入:from functools import reducecode
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)