map/reduce函数部分小结
1.map
map函数传入两个参数,一个是定义的函数,一个是列表,经过map处理可以将整个列表的内容全都执行一遍函数,省下遍历一遍的功能。
def f(x):
return x*x
#f(x)=x^2函数
test = map( f , [1,2,3,4,5])
test = list(test)
#预计结果:test = [1,4,9,16,25]
PS:经过map处理过的列表,返回后直接print后,不会显示[1,4,9,16,25]的情况,需要经list再处理。
2.reduce
reduce接受两个参数,同样是一个函数,一个列表。但他的功效是累计计算,其功能为:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
PS:个人理解有点像高中数学学过的秦九韶算法,从高阶计算到低阶
#列表求和
from functools import reduce
def add(x, y):
return x + y
sum = reduce(add,[1,2,3,4,5])
#sum = 15
#列表数字合并
def listToInt(x, y):
return x * 10 + y
num = reduce(listToInt,[1,2,3,4,5])
#num = 12345
#str变成float
#map结合reduce
from functools import reduce
def str2float(s):
def tenSum(a,b):
return a*10+b
def strToNum(b):
a = {'1':1,'2':2,'3':3,'4':4,'5':5,'6':6, '7':7, '8':8,'9':9,'0':0}
return a[b]
i=s.find('.') #锁定小数点位置
c=reduce(tenSum,map(strToNum,s[:i])) #小数点前均正常
d=reduce(tenSum,map(strToNum,s[i+1:]))/10**(len(s)-i-1)
#小数点后,最后要除以小数点后数字字数对应的幂
return c+d