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使用ftplib实现简易FTP客户端的方法
Jun 03 Python
Python编写Windows Service服务程序
Jan 04 Python
Python利用字典将两个通讯录文本合并为一个文本实例
Jan 16 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
Oct 01 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
python字符串的拼接方法总结
Nov 18 Python
Python字符串的修改方法实例
Dec 19 Python
Python random模块制作简易的四位数验证码
Feb 01 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
Jan 07 Python
python中%格式表达式实例用法
Jun 18 Python
PO模式在selenium自动化测试框架的优势
Mar 20 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
解决中英文字符串长度问题函数
2007/01/16 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
php实现点击可刷新验证码
2015/11/07 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
学习ExtJS Column布局
2009/10/08 Javascript
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
2009/11/27 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
2011/11/21 Javascript
写JQuery插件的基本知识
2013/11/25 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
Angular 数据请求的实现方法
2018/05/07 Javascript
vue组件横向树实现代码
2018/08/02 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
[07:37]DOTA2-DPC中国联赛2月2日Recap集锦
2021/03/11 DOTA
python批量导出导入MySQL用户的方法
2013/11/15 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
2019/04/28 Python
Python Collatz序列实现过程解析
2019/10/12 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
html5声频audio和视频video等新特性详细说明
2012/12/26 HTML / CSS
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
临床医学系毕业生推荐信
2013/11/09 职场文书
如何写一封打动人心的求职信
2014/02/17 职场文书
禁止酒驾标语
2014/06/25 职场文书
2014年国庆节演讲稿
2014/09/02 职场文书
升学宴学生答谢词
2015/01/05 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android
Redis的字符串是如何实现的
2021/10/24 Redis
《黑岩★★射手 DAWN FALL》BD发售宣传CM公开
2022/04/04 日漫