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处理json字符串转化为字典的简单实现
Jul 07 Python
python制作小说爬虫实录
Aug 14 Python
python编程通过蒙特卡洛法计算定积分详解
Dec 13 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
Python + Requests + Unittest接口自动化测试实例分析
Dec 12 Python
Pytest mark使用实例及原理解析
Feb 22 Python
Python3如何使用tabulate打印数据
Sep 25 Python
Sentry错误日志监控使用方法解析
Nov 12 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 Python
如何用python爬取微博热搜数据并保存
Feb 20 Python
基于Python 函数和方法的区别说明
Mar 24 Python
如何使用PyCharm及常用配置详解
Jun 03 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
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
Web前端框架bootstrap实战【第一次接触使用】
2016/12/28 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
js实现碰撞检测
2021/01/29 Javascript
[36:14]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第二局
2016/02/28 DOTA
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python中常用检测字符串相关函数汇总
2015/04/15 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
Python中int()函数的用法浅析
2017/10/17 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
详解scrapy内置中间件的顺序
2020/09/28 Python
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
推荐WEB开发者最佳HTML5和CSS3代码生成器
2015/11/24 HTML / CSS
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
客户表扬信范文
2014/01/10 职场文书
庆中秋节主题活动方案
2014/02/03 职场文书
《秋姑娘的信》教学反思
2014/02/28 职场文书
2015年教师教学工作总结
2015/04/28 职场文书
文化苦旅读书笔记
2015/06/29 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
python 网络编程要点总结
2021/06/18 Python
详解Java ES多节点任务的高效分发与收集实现
2021/06/30 Java/Android
mysql主从复制的实现步骤
2021/10/24 MySQL