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 Tkinter基础控件用法
Sep 03 Python
Python CSV模块使用实例
Apr 09 Python
python开发之基于thread线程搜索本地文件的方法
Nov 11 Python
Python中字符串的修改及传参详解
Nov 30 Python
Python subprocess模块常见用法分析
Jun 12 Python
celery4+django2定时任务的实现代码
Dec 23 Python
python opencv实现信用卡的数字识别
Jan 12 Python
Python全面分析系统的时域特性和频率域特性
Feb 26 Python
PyQt5 控件字体样式等设置的实现
May 13 Python
浅谈python锁与死锁问题
Aug 14 Python
python 6行代码制作月历生成器
Sep 18 Python
Python 如何解决稀疏矩阵运算
May 26 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
在普通HTTP上安全地传输密码
2007/07/21 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
PHP将字符串首字母大小写转换的实例
2017/01/21 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
JQuery为textarea添加maxlength属性的代码
2010/04/07 Javascript
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
jQuery中获取Radio元素值的方法
2013/07/02 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
2017/09/13 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
python使用datetime模块计算各种时间间隔的方法
2015/03/24 Python
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
python 剪切移动文件的实现代码
2018/08/02 Python
python实现Zabbix-API监控
2018/09/17 Python
Python3 列表,数组,矩阵的相互转换的方法示例
2019/08/05 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
python类共享变量操作
2020/09/03 Python
加热夹克:RAVEAN
2018/10/19 全球购物
百度软件工程师职位
2013/02/14 面试题
后勤自我鉴定
2013/10/13 职场文书
幼儿园小班教学反思
2014/02/02 职场文书
医院工作检讨书范文
2014/02/10 职场文书
2014年度考核工作总结
2014/12/24 职场文书
党的群众路线教育实践活动先进个人材料
2014/12/24 职场文书
《牧场之国》教学反思
2016/02/22 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
如何在向量化NumPy数组上进行移动窗口
2021/05/18 Python
python基础之//、/与%的区别详解
2022/06/10 Python
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python