为什么在 Python 列表中时不能将长整数转换为整数?



我在这里看到了很多帖子,其中提供了从python长整数列表中删除尾部L的方法。最常用的方法是

print map(int,list)

然而,这似乎并不总是奏效。

示例---

A=[4198400644L, 3764083286L, 2895448686L, 1158179486, 2316359001L]
print map(int,A)

上面的代码给出了与输入相同的结果。我注意到,只要L前面的数字很大,并且只有当数字在列表中时,map方法才不起作用。例如,在4198400644L上应用int((时,当不在列表中时,确实会给不带L的数字。

为什么会发生这种情况,更重要的是,如何克服这种情况?

我想我真的需要删除这个L,因为这是程序的一小部分,我需要将列表a中的一些整数与非长整数列表中的一些整型相乘,而这个L令人不安。当然,我可以将长整数转换为字符串,去掉L并将其转换回整数。但是还有别的办法吗?

我仍然在使用现在已经过时的Python 2.7。

Python有两种不同的整数。int类型用于那些适合32位,或0x80000000到0x7fffffff的类型。long类型适用于该范围之外的任何内容,就像您的所有示例一样。差异标记为数字后附加L,但仅当您使用repr(n)时,如数字是列表的一部分时自动执行的那样。

在Python 3中,他们意识到这种差异是任意的,也是不必要的。任何int都可以任意大,并且long不再是一种类型。您不会看到repr将尾随的L放在任何数字上,无论数字有多大,而自己将其添加到常量上是一个语法错误。

最新更新