python学习笔记之 map()与reduce()的用法
在python中
map()是将数据分散
reduce是将数据合并
map()与reduce()的应用实例
from functools import reduce
#mapreduce
"""
map()是将数据分散
reduce是将数据合并
"""
#python 内置了map() or reduce()
#map()
#原型 map(fn, lsd)
#参数1是函数
#参数2 是序列
#功能: 将传入的函数一次作用在序列中的每一个元素,并把结果作为新的Iterator返回
def chr2int(chr):
return {"0":0, "1":1, "2":2, "3":3, "4":4, "5":5, "6":6, "7":7, "8":8, "9":9}[chr]
list1 = ["2", "1", "6", "5"]
res = map(chr2int, list1)
print(list(res))
#[chr2int(2), chr2int(1), chr2int(6), chr2int(5)]
#将整数元素的序列,转为字符串型
#[1,2,3,4]->["1", "2", "3", "4"]
ss = map(str, [1,2,3,4])
print(list(ss))
#reduce(fn, lsd)
#参数1为函数
#参数2 是列表
#功能: 一个函数作用在序列上,这个函数必须接受两个参数,reduce把结果继续和序列的下一个元素累计运算
#reduce(f, [a,b,c,d])
#f(f(f(a, b),c),d)类似递归
def mysum(x, y):
return x+y
list2 = [1,2,3,4]
sum = reduce(mysum, list2)
print(sum)
#将字符串转成对应的字面量数字
def str2int(str):
def fc(x,y):
return x*10 + y
def fs(chr):
return {"0":0, "1":11, "2":22, "3":34, "4":44, "5":55, "6":66, "7":77, "8":88, "9":99}[chr]
return reduce(fc, map(fs, list(str)))
str = ['1', '2','3','4']
a = str2int(str)
print(a)
print(type(a))
运行结果
[2, 1, 6, 5]
['1', '2', '3', '4']
10
13584
<class 'int'>
Process finished with exit code 0