我注意到,只要任何整数超过2 ^ 31-1,我的数字重码就会大幅减速,尽管我在64位版本的Windows上使用64位版本的Python。这似乎是{2.7}和Python 3上的true。我读过that Windows使它们的长度为32位,但这并不意味着我不可能使用64位数字
有没有办法通过类或模块甚至不同的Python构建来使用64位整数?
答案 0 :(得分:4)
my_array = numpy.array(my_list,dtype=numpy.int64)
可能?
答案 1 :(得分:1)
我不知道任何使用Python 2.7的int
使用64位本机类型的Windows版本。所有C编译器都将使用long
来指代32位类型。更改Python以使用long long
作为int
的内部表示可能会破坏扩展模块。
在Python 3.x中,唯一的整数类型是任意精度类型(在Python 2.x下称为long
)。在64位系统上,任意精度类型工作在2 ^ 30位的块中。在32位系统上,任意精度类型工作在2 ^ 15位的块中。值15和30很难改变。
对于外部库,我维护gmpy2库。它提供对任意精度GMP / MPIR库的访问。一旦数字达到~128位,gmpy2.mpz
整数类型通常更有效。 YMMV。
答案 2 :(得分:-2)
python有four numeric types 对于整数,有int和long。长整数具有无限精度。当你输入一个足够大的数字时,你得到很长时间,或者你可以通过添加" l"
来明确指定它。>>> s = 1000
>>> type(s)
<type 'int'>
>>> s = 1000l
>>> type(s)
<type 'long'>