xrange 函数不适用于大整数:
>>> N = 10**100
>>> xrange(N)
Traceback (most recent call last):
...
OverflowError: long int too large to convert to int
>>> xrange(N, N+10)
Traceback (most recent call last):
...
OverflowError: long int too large to convert to int
Run Code Online (Sandbox Code Playgroud)
Python 3.x:
>>> N = 10**100
>>> r = range(N)
>>> r = range(N, N+10)
>>> len(r)
10
Run Code Online (Sandbox Code Playgroud)
range()Python 2.x 有py3k内置函数的后端吗?
我正在寻找一个完整的"懒惰"实现range(),而不只是部分实现它的一些功能.
因此,当某事物的长度接近1 << 32(int的大小)时,cPython(2.4)会有一些有趣的行为.
r = xrange(1<<30)
assert len(r) == 1<<30
Run Code Online (Sandbox Code Playgroud)
很好,但是:
r = xrange(1<<32)
assert len(r) == 1<<32
ValueError: xrange object size cannot be reported`__len__() should return 0 <= outcome
Run Code Online (Sandbox Code Playgroud)
Alex的wowrange也有这种行为. wowrange(1<<32).l很好,但 len(wowrange(1<<32))很糟糕.我猜这里有一些浮点行为(被视为负面)行动.
(我的具体应用是,random.sample(xrange(1<<32),ABUNCH))如果人们想直接解决这个问题!)
我想使用Python中的range()函数迭代大量的数字,如600851475143.但每当我运行程序时,它都会给我一个OverflowError.我使用了以下代码 -
um = long(raw_input())
for j in range(1,num):
....
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多次但它不起作用!
我在这里尝试了它,但它无法打印这样的长数字
for i in range(1,222222222222222):
print i
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback (most recent call last):
File "x.py", line 1, in <module>
for i in range(1,222222222222222):
MemoryError
Run Code Online (Sandbox Code Playgroud)