4、利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456

本文介绍了一种使用Python的map和reduce函数将字符串'123.456'转换为浮点数123.456的方法。通过定位小数点,将字符串分为整数和小数两部分,并分别处理,最终实现字符串到浮点数的精确转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# -*- coding: utf-8 -*-

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'))
if abs(str2float('123.456') - 123.456) < 0.00001:
    print('测试成功!')
else:
    print('测试失败!')

这个答案非原创,也是某位前辈写的。 
1行,从 functools 包里调用 reduce 
3-4行,定义一个 fn() 函数,用来把S1,S2这两个list里面的元素变成一个数。 
5行,很关键的一步,利用 index() 函数确定字符串 S 中 ‘.’的位置。 
6-7行,先利用切片把我们传入的 str 分成以前以后两个部分(其实就是根据小数点分成整数和浮点数,分别处理),然后再把切割好的 str 利用 int 变成整数,map() 函数负责把 int 作用到截取的 str 的每个元素中去。 
8行,就说一个知识点,其他的都很好理解,m**n 这个表达的就是 m 的 n 次方。

posted on 2018-02-06 22:47 Hello _ world 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/zwb8848happy/p/8424606.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值