我们有需要遍历的号码“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
答案 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
和其他参数。但是你可以在网上搜索完整的实现(应该在那里)。