Discuss / Python / 小数部分的reduce

小数部分的reduce

Topic source

from functools import reduce


def str2float(s):
    m = s.split('.')
    return reduce(lambda x, y: x * 10 + y, map(char2num, m[0])) + reduce(***lambda j, k: j***, map(char2num, m[1]))

def char2num(m):
    return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5':5, '6': 6, '7': 7, '8': 8, '9': 9}[m]


print('str2float(\'123.456\') =', str2float('123.456'))

请问第二个reduce的j,k要肿么写.

lambda在取值的时候貌似是从左往右的顺序, 0.abcd=a0.1 + b0.01 + c0.001 +... =((a + b0.1)0.1 + c0.1)*0.1 + ... 那这样的话要像写成整数部分那样,j,k就得从右往左取值... <(0_o)>


  • 1

Reply