python用reduce和map把字符串转为数字的方法


Posted in Python onDecember 19, 2016

python中reduce和map简介

map(func,seq1[,seq2...]) :将函数func作用于给定序列的每个元素,并用一个列表来提供返回值;如果func为None,func表现为身份函数,返回一个含有每个序列中元素集合的n个元组的列表。

reduce(func,seq[,init]) :func为二元函数,将func作用于seq序列的元素,每次携带一对(先前的结果以及下一个序列的元素),连续的将现有的结果和下一个值作用在获得的随后的结果上,最后减少我们的序列为一个单一的返回值:如果初始值init给定,第一个比较会是init和第一个序列元素而不是序列的头两个元素。

这篇文章主要介绍的是python利用reduce和map把字符串转为数字,下面话不多说,来看看详细的实现方法。

习题:

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

解法及思路说明:

from functools import reduce
 
def str2float(s):
 s = s.split('.') #以小数点为分隔符,把字符串分为两部分
 
 def f1(x,y): #函数1,小数点之前的数用这个函数处理
  return x * 10 + y
 
 def f2(x,y): #函数2,小数点之后的数用这个函数处理
  return x / 10 + y
 
 def str2num(str): #函数3,用于把字符串'123'逐个变为数字
  return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[str]
 
 return reduce(f1,map(str2num,s[0])) + reduce(f2,list(map(str2num,s[1]))[::-1])/10
 
 #最后一部是这个解法的精髓
 #小数点前的数'123',用 x * 10 + y 正常求和就能得出123,小数点之后的数'456'要怎样才能得出0.456呢?
 #首先把字符串'456'用list(map(str2num,s[1]))转成一个列表[4,5,6]
 #然后用[::-1]切片的方式从后往前取,列表变为[6,5,4]
 #然后把[6,5,4]利用reduce函数放到f2函数中计算,( 6 / 10 + 5) / 10 + 4 = 4.56,得出结果4.56
 #再除以一个10,得出0.456,到此成功把字符串'456'变成了浮点数0.456
 #把前后结果加起来,就得到了最终解,成功把字符串'123.456'变成了浮点数123.456

总结

以上就是这篇文章的全部内容,希望本文的内容对大家学习或使用python能带来一定的帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
Mar 31 Python
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
May 06 Python
Python的装饰器模式与面向切面编程详解
Jun 21 Python
详解Python编程中基本的数学计算使用
Feb 04 Python
python魔法方法-自定义序列详解
Jul 21 Python
Python 使用os.remove删除文件夹时报错的解决方法
Jan 13 Python
python得到一个excel的全部sheet标签值方法
Dec 10 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
Mar 18 Python
django之导入并执行自定义的函数模块图解
Apr 01 Python
python的flask框架难学吗
Jul 31 Python
python爬虫请求库httpx和parsel解析库的使用测评
May 10 Python
浅谈哪个Python库才最适合做数据可视化
Jun 28 Python
python虚拟环境virualenv的安装与使用
Dec 18 #Python
更改Ubuntu默认python版本的两种方法python-> Anaconda
Dec 18 #Python
python 调用HBase的简单实例
Dec 18 #Python
python操作 hbase 数据的方法
Dec 18 #Python
Python合并字典键值并去除重复元素的实例
Dec 18 #Python
python利用matplotlib库绘制饼图的方法示例
Dec 18 #Python
浅谈Python的垃圾回收机制
Dec 17 #Python
You might like
php正则表达匹配中文问题分析小结
2012/03/25 PHP
PHP中session变量的销毁
2014/02/27 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
node.js中的url.format方法使用说明
2014/12/10 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
js编写贪吃蛇的小游戏
2020/08/24 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
vue+ESLint 配置保存 自动格式化代码
2020/03/17 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
2020/05/15 Javascript
javascript实现移动端红包雨页面
2020/06/23 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
Python2实现的LED大数字显示效果示例
2017/09/04 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
Python读取指定日期邮件的实例
2019/02/01 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
Python单链表原理与实现方法详解
2020/02/22 Python
设计总监岗位职责
2013/12/07 职场文书
大学生学习自我评价
2014/01/13 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
如何在Python项目中引入日志
2021/05/31 Python
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技
Java界面编程实现界面跳转
2022/06/16 Java/Android