关键字-值的对应转换:
1.把str
转换为int
的函数:
educe把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
map()
函数接收两个参数,一个是函数,一个是序列,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
考虑到字符串str也是一个序列!对一个序列求和,就可以用reduce实现。
def str2int(s):
def fn(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] #把序列[‘1‘, ‘3‘, ‘5‘,‘ 7‘, ‘9‘]
变换成整数13579
return reduce(fn, map(char2num, s))
ps:以上dict就运用了把一串字符用“关键字-值”的二元对应关系进行了转换。
当然最后还可以用lambda函数来简化。
原文:http://www.cnblogs.com/zhicn/p/4367621.html