第1个回答 2022-10-30
回答这个问题之前,先看一个函数
def char2num(s):
digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
return digits[s]
L=list(map(char2num, '63')) # map 是把这个'63'看作是一个list,即['6','3'] 2个元素了,一个一个字节放到 char2num 函数内执行
print(L) #生成的结果是 [6, 3]
L=list(map(char2num, ['6','3']))
print(L) #生成的结果是 [6, 3]
所以,
from functools import reduce
def fn(x, y):
return x * 10 + y
def char2num(s):
digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
return digits[s]
L=reduce(fn, map(char2num, '63579')) # 先是调用 map(char2num, '63579'),把'63579'按一个一个字节放到 函数 char2num内,生成一个list[6,3,5,7,9],然后再操作
L=reduce(fn,[6,3,5,7,9])
print(L) #63579