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实现读取目录所有文件的文件名并保存到txt文件代码
Nov 22 Python
python使用正则表达式提取网页URL的方法
May 26 Python
JSON Web Tokens的实现原理
Apr 02 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
Jan 20 Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 Python
python实现内存监控系统
Mar 07 Python
Python提取支付宝和微信支付二维码的示例代码
Feb 15 Python
Python去除字符串前后空格的几种方法
Mar 04 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
Aug 12 Python
python matplotlib折线图样式实现过程
Nov 04 Python
python 进阶学习之python装饰器小结
Sep 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定时执行计划任务的多种方法小结
2011/12/19 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
php简单备份与还原MySql的方法
2016/05/09 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
超精准的javascript验证身份证号的具体实现方法
2015/11/18 Javascript
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
Python使用自带的ConfigParser模块读写ini配置文件
2016/06/26 Python
浅述python2与python3的简单区别
2018/09/19 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
印尼在线旅游门户网站:NusaTrip
2019/11/01 全球购物
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
企业管理毕业生求职信
2014/03/11 职场文书
观看《永远的雷锋》心得体会
2014/03/12 职场文书
2014年关于两会精神的心得体会
2014/03/17 职场文书
协议书样本
2014/04/23 职场文书
小学优秀教育工作者事迹材料
2014/05/09 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
八一建军节演讲稿
2014/09/10 职场文书
2014业务员年终工作总结
2014/12/09 职场文书
交通事故起诉书
2015/05/19 职场文书
物业保洁员管理制度
2015/08/05 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB