Ric*_*nes 12
你可以试试这个.与范围相同的语义:
import operator
def lrange(num1, num2 = None, step = 1):
op = operator.__lt__
if num2 is None:
num1, num2 = 0, num1
if num2 < num1:
if step > 0:
num1 = num2
op = operator.__gt__
elif step < 0:
num1 = num2
while op(num1, num2):
yield num1
num1 += step
>>> list(lrange(138264128374162347812634134, 138264128374162347812634140))
[138264128374162347812634134L, 138264128374162347812634135L, 138264128374162347812634136L, 138264128374162347812634137L, 138264128374162347812634138L, 138264128374162347812634139L]
Run Code Online (Sandbox Code Playgroud)
另一解决方案是使用itertools.islice
如在建议的,xrange
的文档
创建范围没有问题,只要你不想要10**13个元素,例如
range(10**14,10**15,10**14)
Run Code Online (Sandbox Code Playgroud)
给
[100000000000000, 200000000000000, 300000000000000, 400000000000000, 500000000000000, 600000000000000, 700000000000000, 800000000000000, 900000000000000]
Run Code Online (Sandbox Code Playgroud)
如果你需要枚举整数尝试使用itertools:
itertools.count(1000000000000)
Run Code Online (Sandbox Code Playgroud)
它不应该为1000000000000
元素列表分配内存
归档时间: |
|
查看次数: |
11502 次 |
最近记录: |