处理Python中的大量数字

时间:2014-03-19 06:30:03

标签: python

我们有需要遍历的号码“17179869184”。但是当我们遍历列表时,我们得到了内存错误。无论如何我们可以处理类似的范围编号

for i in range(17179869184):
    print i

for i in xrange(17179869184):
    print i



Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    for i in xrange(17179869184):
OverflowError: Python int too large to convert to C long

2 个答案:

答案 0 :(得分:6)

您可以itertools.count使用iter

>>> from itertools import count
>>> c = count(0)
>>> for i in iter(c.next, 17179869184):
        #do something with i

请注意,如果您只想循环这么多次,即您在循环中没有使用i,那么最好使用itertools.repeat

>>> from itertools import repeat
>>> for _ in repeat(None, 17179869184):
...     # do something here

答案 1 :(得分:3)

使用while循环:

i=0
while i < 17179869184:
    # do stuff
    i += 1

如果多次执行此操作,请使用生成器创建range()的Python实现。

def py_range(num):
    i = 0
    while i < num:
        yield i
        i+=1

好吧,py_range()range()不同,因为它有start和其他参数。但是你可以在网上搜索完整的实现(应该在那里)。