python reduce()/map() 将字符串转成浮点数


最近在学习廖雪峰老师的python教程所以最在这里插入代码片近更新的将主要是课后习题,今天学习的是高阶函数reduce/map

课后练习题如下?:

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

解题如下?:

#!/usr/bin/env python3
from functools import reduce

#将字符串转化为浮点数 
def str2float(s): 	
	dicts = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9} 	
	mod = len(s) - s.index('.') -1 	
	#**表示次方 	
	return reduce(lambda x,y:x*10+y, map(lambda m:dicts[m],s.replace('.','')))*0.1**mod  

#测试函数
print('str2float(\'123.456\') =', str2float('123.456')) 
if abs(str2float('123.456') - 123.456) < 0.00001:
	print('测试成功!') 
else:
	print('测试失败!')

解题说明

相信大家学习了reduce之后一定都知道如何将整数样子的字符串转化为整数
我们可以认为12.3就是123.0然后小数点向左?移动移动一位;
我们要实现这个就是把整数➗10
所以分为以下几步

  1. 用map()将字符串序列转化为整数序列(要去除.)
  2. 得到小数位数n
  3. 按照将字符串转为整数的方法,对上述序列进行处理,得到类似于123456的整数
  4. 对得到的整数乘以0.1的n次方===等价于除以10的n次方

另外说明:
本函数中用到的几点:
1.**表示次方
2.lambda定义一个匿名函数,用来得到一个简单的函数非常方便

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值