DIGITS={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
def str2float(s):
s=s.split('.')
if s[0]==0:
return 0+reduce(lambda x,y:x/10+y , map(lambda x:DIGITS[x],s[1][::-1]))/10
else:
return reduce(lambda x,y:x*10+y,map(lambda x:DIGITS[x],s[0]))+reduce(lambda x,y:x/10+y , map(lambda x:DIGITS[x],s[1][::-1]))/10
print(str2float('123.0456'))
print(str2float('0.0456'))
主要为了学习lambda,map,reduce等操作。注意s[::-1]是将所有元素翻转