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 网络编程起步(Socket发送消息)
Sep 06 Python
Python和perl实现批量对目录下电子书文件重命名的代码分享
Nov 21 Python
浅谈python中的变量默认是什么类型
Sep 11 Python
浅谈Python实现Apriori算法介绍
Dec 20 Python
python tensorflow基于cnn实现手写数字识别
Jan 01 Python
python进行两个表格对比的方法
Jun 27 Python
Python爬虫动态ip代理防止被封的方法
Jul 07 Python
基于 Django 的手机管理系统实现过程详解
Aug 16 Python
python多线程实现代码(模拟银行服务操作流程)
Jan 13 Python
Python读取表格类型文件代码实例
Feb 17 Python
Python绘制数码晶体管日期
Feb 19 Python
Selenium浏览器自动化如何上传文件
Apr 06 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
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
php二分查找二种实现示例
2014/03/12 PHP
codeigniter发送邮件并打印调试信息的方法
2015/03/21 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
PHP页面输出搜索后跳转下一页的处理方法
2016/09/30 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
2017/02/08 PHP
PHP实现用session来实现记录用户登陆信息
2018/10/15 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
jquery隔行换色效果实现方法
2015/01/15 Javascript
Node.js事件驱动
2015/06/18 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
JavaScript 数据类型详解
2017/03/13 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
Vue.use()在new Vue() 之前使用的原因浅析
2019/08/26 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
python和bash统计CPU利用率的方法
2015/07/10 Python
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
Django中的ajax请求
2018/10/19 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
Linux如何为某个操作添加别名
2015/02/05 面试题
品质主管岗位职责
2014/03/16 职场文书
年终奖发放方案
2014/06/02 职场文书
社会学专业求职信
2014/07/17 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
签订劳动合同通知书
2015/04/16 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers