Léo*_* 준영 1 python string sequence
将数字转换为序列时,在数字的开头不能使用零的原因是什么?
代码示例
map(int,str(08978789787))
Run Code Online (Sandbox Code Playgroud)
这给了Syntax error.
我想将前导数字为零的数字转换为序列. 如何将这样的数字转换为序列?
Nad*_*mli 14
发生这种情况是因为前导零表示您正在编写八进制数,并且八进制数中不能包含9或8.看到:
>>> a = 0123
>>> a
83
>>> a = 010
>>> a
8
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
>>> map(int, '08978789787')
[0, 8, 9, 7, 8, 7, 8, 9, 7, 8, 7]
Run Code Online (Sandbox Code Playgroud)
在"一个整数0领先意味着它的八进制" Meme是一个很特殊的一个起源于C和遍布的地方-的Python(1*和2*),Perl中,红宝石,爪哇...的Python 3已经通过制造领先0非法的所有整数消灭它(除了在结构0x,0b,0o以表示十六进制,二进制和八进制符号).
然而,即使在一个假设的合理的语言,其中主要0的一个int有其正常的算术意义,那就是,没有任何意义,你还是不会得到你想要的结果:011然后将完全相同于11,所以呼吁str对其中一方会必须产生相同的结果 - 一串长度为2的字符串'11'.
在算术中,由十进制表示法表示的整数011是相同的,完全相同的实体,与十进制表示法表示的整数无法区分,一个和相同11.没有任何假设的合理语言会完全改变算术规则,因为这样可以让你获得你想要的结果.
所以,就像其他人说的那样,直接使用一个字符串 - 为什么不呢?毕竟?!