将数值型字符串转换成数值。

看了前面大神写的文章和代码,不知道自己在重要地方理解对不对,希望有大神给指点一下。

from functools import reduce
def str2float(num):
    def pro(x,y):
        return 10*x+y
    n=num.index('.')
    #取小数点所在的位置
    str1=list(map(int,[x for x in num[:n]]))
    #x for x in num[:n]将num映射成list,将num中小数点前的数字映射出来
    str2=list(map(int,[x for x in num[n+1:]]))
    #x for x in num[n+1:]将num映射成list,将num中小数点后的数字映射出来
    return reduce(pro,str1)+reduce(pro,str2)/(10**len(str2))
print('\'123.4567\'=',str2float('123.4567'))