python用reduce和map把字符串转为数字的方法
最近在复习高阶函数的时候,有一道题想了半天解不出来。于是上午搜索资料,看了下别人的解法,发现学习编程,思维真的很重要。下面这篇文章就来给大家介绍了python利用reduce和map把字符串转为数字的思路及方法,有需要的朋友们可以参考借鉴,下面来一起看看吧。

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用reduce和map把字符串转为数字的方法的更多相关文章
- 高阶函数复习:利用reduce和map把字符串转为数字
复习高阶函数的时候,有一道题想了半天解不出来.看了下别人的解法,发现学习编程,思维真的很重要. 习题: 利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数1 ...
- python 将列表中的字符串转为数字
本文实例讲述了Python中列表元素转为数字的方法.分享给大家供大家参考,具体如下: 有一个数字字符的列表: numbers = ['1', '5', '10', '8'] 想要把每个元素转换为数字: ...
- Python不使用int()函数把字符串转换为数字
Python不使用int()函数把字符串转换为数字 2018年05月21日 14:18:45 边缘ob边缘ob 阅读数:1035 https://blog.csdn.net/qq_33192555/a ...
- js字符串转为数字方法parseInt()、减号、乘号、JSON.parse()、Number()的效率比较
var a = '1'; var b = '0x1'; var runTest = function(timeTag, testFunction) { console.time(timeTag); f ...
- JavaScript 字符串转为数字
js中字符串转为数字主要4种,分别为转换函数,强制转换,js变量弱类型转换,正则表达式. 1.转换函数 JS中提供了两个转换函数parseInt()和parseFloat(),parseInt()将值 ...
- jquery过滤特殊字符及js字符串转为数字
//替换特殊字符 $(this).val($(this).val().replace(/[~'!<>@#$%^&*()-+_=:]/g, "")); 方法主要有 ...
- C语言中将字符串转换为数字的方法
C语言提供了几个标准库函数,可以将字符串转换为任意类型(整型.长整型.浮点型等)的数字.以下是用atoi()函数将字符串转换为整数的一个例子: # include <stdio. h># ...
- javascript 字符串转换数字的方法大总结
方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有 ...
- js中字符串转数字的方法
1.当字符串中是纯数字 例如:var s = '234'; /********** 字符串在运算操作中会被当做数字类型来处理 ***************/ s *= 1; /******* str ...
随机推荐
- 2008年最佳Web设计/前端开发技巧、脚本及资源总结
工具&Web应用 13个可能会让你说”Thank You”的必不可少的开源应用 14个免费工具让你了解为什么人们会放弃访问你的网站 40+CSS生成器 74个我们可能已经忘记的适合网页设计师的 ...
- JDBC_事务说明
JDBC控制事务:1.事务:一个包含多个步骤的业务操作,如果这个业务操作被事务管理则多个步骤同时成功或同时失败2.操作: 1.开启事务 2.提交事务 3.回滚事务3.使用Connection对象来管理 ...
- sparkStreaming结合SparkSql实例
SparkSQL结合SparkStreaming的使用 Flume+Kafka+SparkStreaming已经发展为一个比较成熟的实时日志收集与计算架构,利用Kafka,即可以支持将用于离线分析的数 ...
- Git创建本地库过程
- write -在一个文件描述符上执行写操作
概述 #include <unistd.h> ssize_t write(int fd, const void *buf, size_t count); 描述 write 向文件描述符 f ...
- 笔记:简单的面向对象-web服务器
import socket import re import multiprocessing import time import mini_frame class WSGIServer(object ...
- JS函数 编程练习 使用javascript代码写出一个函数:实现传入两个整数后弹出较大的整数。
编程练习 使用javascript代码写出一个函数:实现传入两个整数后弹出较大的整数. 任务 第一步: 编写代码完成一个函数的定义吧. 第二步: 我们来补充函数体中的控制语句,完成函数功能吧. 提示: ...
- Ubuntu升级软件和ubuntu升级系统的命令
sudo apt-get update: 升级安装包相关的命令,刷新可安装的软件列表(但是不做任何实际的安装动作) sudo apt-get upgrade: 进行安装包的更新(软件版本的升级) su ...
- make 基础
Make这个词,英语的意思是"制作".Make命令直接用了这个意思,就是要做出某个文件.比如,要做出文件a.txt,就可以执行下面的命令. $ make a.txt 但是,如果你真 ...
- 20175323《Java程序设计》第二周学习总结
一.教材学习内容总结 标识符第一个字符不能是数字且区分大小写数据类型转换时只允许把精度低的给精度高的,否则必须强制转换输入数据语法 Scanner reader = new Scanner(Syste ...