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实现各种排序算法的代码示例总结
Dec 11 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
Jun 18 Python
一张图带我们入门Python基础教程
Feb 05 Python
浅谈python内置变量-reversed(seq)
Jun 21 Python
Python基于辗转相除法求解最大公约数的方法示例
Apr 04 Python
在Python运行时动态查看进程内部信息的方法
Feb 22 Python
Python数据类型之列表和元组的方法实例详解
Jul 08 Python
python3.6+django2.0+mysql搭建网站过程详解
Jul 24 Python
python 模拟创建seafile 目录操作示例
Sep 26 Python
python创建学生成绩管理系统
Nov 22 Python
python中的线程threading.Thread()使用详解
Dec 17 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 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
计数器详细设计
2006/10/09 PHP
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
PHP 强制下载文件代码
2010/10/24 PHP
php中curl和file_get_content的区别
2014/05/10 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
AngularJS入门教程之模块化操作用法示例
2016/11/02 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
angular 服务随记小结
2019/05/06 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
从Python的源码来解析Python下的freeblock
2015/05/11 Python
编写Python CGI脚本的教程
2015/06/29 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
python自动发微信监控报警
2019/09/06 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
520使用Python实现“我爱你”表白
2020/05/20 Python
PyQt5实现简单的计算器
2020/05/30 Python
班组安全员工作职责
2014/02/01 职场文书
药品促销活动方案
2014/02/14 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
主题团日活动总结
2014/06/25 职场文书
2014领导班子正风肃纪思想汇报
2014/09/18 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
学期个人工作总结
2015/02/13 职场文书
2015年市场部工作总结
2015/04/30 职场文书
一文带你探究MySQL中的NULL
2021/11/11 MySQL