我想使用Python中的range()函数迭代大量的数字,如600851475143。但每当我运行程序时,它都会给我一个OverflowError。 我使用了以下代码 -
um = long(raw_input())
for j in range(1,num):
....
我已经尝试了很多次但它没有用!
答案 0 :(得分:5)
如果您的索引是长数,请使用itertools.islice()
:
from itertools import islice, count
islice(count(start, step), (stop-start+step-1+2*(step<0))//step)
Python 3的range()
也可以处理python long。
根据您的情况简化:
for j in islice(count(1), num - 1):
答案 1 :(得分:2)
尽管xrange
似乎达到了你想要的效果,但却无法处理那么大的数字。您可能需要使用here
CPython实现细节:xrange()旨在简单快速。实现可能会对此实施限制。 Python的C实现将所有参数限制为本机C long(“短”Python整数),并且还要求元素的数量适合本机C long。如果需要更大的范围,可以使用itertools模块制作备用版本:
islice(count(start, step), (stop-start+step-1+2*(step<0))//step)
。
答案 2 :(得分:1)
不要用于,使用时
counter = long(1)
while counter < num:
...