相关疑难解决方法(0)

`xrange(2**100)` - > OverflowError:long int太大而无法转换为int

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(),而不只是部分实现它的一些功能.

python range biginteger xrange python-3.x

16
推荐指数
3
解决办法
1万
查看次数

Python,len和整数的大小

因此,当某事物的长度接近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))很糟糕.我猜这里有一些浮点行为(被视为负面)行动.

  1. 到底发生了什么?(这在下面很好解决!)
  2. 我怎么能绕过它呢? 多头?

(我的具体应用是,random.sample(xrange(1<<32),ABUNCH))如果人们想直接解决这个问题!)

python int

5
推荐指数
2
解决办法
3914
查看次数

如何使用range()在Python中迭代大数?

我想使用Python中的range()函数迭代大量的数字,如600851475143.但每当我运行程序时,它都会给我一个OverflowError.我使用了以下代码 -

um = long(raw_input())
for j in range(1,num):
....
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多次但它不起作用!

python loops largenumber

5
推荐指数
2
解决办法
8761
查看次数

我如何打印1-9999的数字?

我在这里尝试了它,但它无法打印这样的长数字

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)

python

1
推荐指数
1
解决办法
1239
查看次数

标签 统计

python ×4

biginteger ×1

int ×1

largenumber ×1

loops ×1

python-3.x ×1

range ×1

xrange ×1