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中expandtabs()方法的使用
May 18 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
Django如何实现内容缓存示例详解
Sep 24 Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
python删除本地夹里重复文件的方法
Nov 19 Python
python 判断矩阵中每行非零个数的方法
Jan 26 Python
python实现中文文本分句的例子
Jul 15 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
Oct 24 Python
python进程池实现的多进程文件夹copy器完整示例
Nov 27 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
Feb 20 Python
opencv读取视频并保存图像的方法
Jun 04 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数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
2016/12/02 PHP
js实现广告漂浮效果的小例子
2013/07/02 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
vue.js的安装方法
2017/05/12 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
[48:00]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第二场 11.04
2020/11/04 DOTA
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
Python+Django搭建自己的blog网站
2018/03/13 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
python正则表达式实例代码
2020/03/03 Python
python爬虫实现获取下一页代码
2020/03/13 Python
python 实现超级玛丽游戏
2020/11/25 Python
CSS3实现类似翻书效果的过渡动画的示例代码
2019/09/06 HTML / CSS
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
C语言基础笔试题
2013/04/27 面试题
某公司的.net工程师面试题笔试题
2013/11/22 面试题
工商管理专业应届生求职信
2013/11/04 职场文书
班子成员四风问题自我剖析材料
2014/09/29 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书