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开发之IDEL(Python GUI)的使用方法图文详解
Nov 12 Python
python数据预处理之将类别数据转换为数值的方法
Jul 05 Python
50行Python代码实现人脸检测功能
Jan 23 Python
Python实现base64编码的图片保存到本地功能示例
Jun 22 Python
python Tkinter的图片刷新实例
Jun 14 Python
Flask配置Cors跨域的实现
Jul 12 Python
Python爬取知乎图片代码实现解析
Sep 17 Python
Python远程开发环境部署与调试过程图解
Dec 09 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
Dec 10 Python
Django Admin后台添加数据库视图过程解析
Apr 01 Python
聊聊python中的异常嵌套
Sep 01 Python
详解Django中 render() 函数的使用方法
Apr 22 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基础学习笔记
2007/03/18 PHP
php中一个有意思的日期逻辑处理
2012/03/25 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
脚本收藏iframe
2006/07/21 Javascript
JS 强制设为首页的代码
2009/01/31 Javascript
jQuery学习5 jQuery事件模型
2010/02/07 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
vue cli 3.0 使用全过程解析
2018/06/14 Javascript
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
jquery实现下载图片功能
2019/07/18 jQuery
简单谈谈Python流程控制语句
2016/12/04 Python
python django 访问静态文件出现404或500错误
2017/01/20 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
使用Python内置模块与函数进行不同进制的数的转换
2020/04/26 Python
PyTorch安装与基本使用详解
2020/08/31 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
澳大利亚小众服装品牌:Maurie & Eve
2018/03/27 全球购物
中学自我评价
2014/01/31 职场文书
岗位职责风险防控
2014/02/18 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
小学语文教学随笔
2015/08/14 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书