map()和reduce(): 二者都是高阶函数。map()接收两个参数,一个是函数,一个是Iterable序列,map将传入的函数依次作用在序列每一个元素上,并把结果作为新的Iterator返回。reduce()类似累积计算版的map(),把一个函数作用在一个序列上,每次接收两个参数,将结果继续与序列的下一个元素做累积计算。
利用map和reduce编写一个str2float函数,如把字符串'123.456'
转换成浮点数123.456:
from functools import reduce
def str2float(s):
def f1(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]
def f2(x,y):
return x*0.1 + y
a,b = s.split('.')
print('a=',a)
print('b=',b)
return reduce(f1, map(char2num,a)) + 0.1*reduce(f2, map(char2num,b[::-1]))
print('str2float(\'123.456\') =', str2float('123.456'))