#为什么返回这个字典能把字符串转换成int数组形式
from functools import reduce
DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
def str2int(s):
def fn(x, y):
return x * 10 + y
def char2num(s):
return DIGITS[s]
return reduce(fn, map(char2num, s))
这个程序将字符中的 '1' '2' '3' ... 利用查表法转换为1 2 3,这样就算出每一位。
再用reduce累计,每次都把之前的结果x10加上新的结果。
比如有 '123'
首先得到 '1' '2' '3'
然后map出来就是1 2 3
再reduce
1
1x10+2
(1x10+2)x10+3
就算出123