把字符串'123.456'转换成浮点数 123.456(廖雪峰,拓展)

根据廖雪峰的习题,通过map和reduce函数将字符串'123.456'转换为浮点数123.456。解答解析了index()函数在定位小数点位置的作用,以及map与reduce的区别,后者在计算中会结合前一次的结果。
摘要由CSDN通过智能技术生成

原题:利用 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写,写了一个简单的,并验证了是否是浮

                       点数。


                    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值