利用map和reduce编写一个函数,把字符串转换成浮点数
整体思路为原字符串替换掉小数点后全部装换为数值运算后 再除 10 的(小数点倒数位数) 的次方
这里没有直接用原 len(s)-s.find(‘.’,0,-1) -1 是考虑到可能原str可能没有小数点的情况,这样小数点下标会变成 -1 结果会出错;
故使用原字符剔除小数点后的长度,减去用小数点做分割后小数点左边str的长度 这样无论有无小数点,甚至是小数点开头或结束,都能正确运算
from functools import reduce
def char2num(n):
ys={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
return ys[n]
def str2float(s):
ls=s.replace('.','')
return reduce(lambda x,y:x*10+y,map(char2num,ls))/10**(len(s.replace('.',''))-len(s.split('.')[0]))
问题来源:https://www.liaoxuefeng.com/wiki/1016959663602400/1017329367486080