博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
把“数字的字符串”转换成“整数”时遇到的小麻烦
阅读量:6895 次
发布时间:2019-06-27

本文共 796 字,大约阅读时间需要 2 分钟。

from functools import reducedef str2int(s):    def fn(x, y):        return x * 10 + y    def char2num(s):        return {
'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s] return reduce(fn, map(char2num, s))

我尝试在cmd的python交互模式下调出{'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[s]的返回值都失败了

尝试1:
s='13579'
{'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[s]
提示:KeyError:'13579'
尝试2:
{'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}['13579']
依然提示:KeyError:'13579'

而程序整体的运行确实十分正确顺利,原因就在于对于map()函数的理解不够深入:map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

所以‘13579’在map函数下其实是按生成器一个字符一个字符的进行运算的,所以并不会报错。而直接像楼主那样的“尝试1”,“尝试2”会爆错也就不奇怪了,{}中并没有‘13579’这样的键。

转载于:https://www.cnblogs.com/cccmon/p/7898734.html

你可能感兴趣的文章
oracle创建透明网关出现的问题
查看>>
对象和类
查看>>
分布式事务
查看>>
udp,select超时和recvfrom收不到数据原因
查看>>
将任意程序(如.bat文件)作为Windows服务运行
查看>>
【ElasticSearch篇】--ElasticSearch从初识到安装和应用
查看>>
Java命令参数说明大全
查看>>
PIE SDK创建掩膜
查看>>
(四)springmvc+mybatis+dubbo+zookeeper分布式架构 整合 - maven代码结构
查看>>
SQL查询到的数据放到DataSet中
查看>>
mybatis的selectOne和selectList没有数据返回时的问题
查看>>
批处理+组策略 实现规定时间段无法开机and定时关机
查看>>
我的升级
查看>>
centos 6.4 server 安装nginx
查看>>
JS OOP -04 JS中的公有成员,私有成员和静态成员
查看>>
Elevator
查看>>
nx-admin 引入Ueditor
查看>>
npm包的安装与卸载命令行总结
查看>>
glide 镜像
查看>>
struts2
查看>>