原题:利用 map 和 reduce 编写一个 str2float 函数,把字符串'123.456'转换成浮点数 123.456
这是我在学习python过程中写到的一个题,答案非原创
from functools import reduce
def str2float(s):
def fn(x,y):
return x*10+y
n=s.index('.')
s1=list(map(int,[x for x in s[:n]]))
s2=list(map(int,[x for x in s[n+1:]]))
return reduce(fn,s1)+reduce(fn,s2)/10**len(s2)
print('str2float(\'123.456\')=',str2float('123.456'))
结果:
看到这个题最开始,我想的是经过对‘ . ’的判断,去计算两边的数字,后来发现没有这个方法。
看到了这个答案,这个答案的理解:
index( ) :是对‘ . ’位置的具体判断
map和reduce最本质的区别在与计算的时候,map是单个计算,而reduce会牵扯到上一个计算的内容,将上一次计算的结果带入到本次计算中。
补充小知识:1,当我写完之后,想这怎么验证是否是浮点数, 又没有用map和reduce写,写了一个简单的,并验证了是否是浮
点数。