Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python OverflowerError:range()结果有太多项,尽管它没有';T_Python_Python 2.7 - Fatal编程技术网

Python OverflowerError:range()结果有太多项,尽管它没有';T

Python OverflowerError:range()结果有太多项,尽管它没有';T,python,python-2.7,Python,Python 2.7,我有一个循环: for i in range(1000000000, 1000000030): foo(i) 当我执行它时,会出现以下错误: Traceback (most recent call last): File "/CENSORED/Activity.py", line 11, in <module> for i in range(1000000000, 10000000030): OverflowError: range() result has t

我有一个循环:

for i in range(1000000000, 1000000030):
    foo(i)
当我执行它时,会出现以下错误:

Traceback (most recent call last):
  File "/CENSORED/Activity.py", line 11, in <module>
    for i in range(1000000000, 10000000030):
OverflowError: range() result has too many items.
编辑2:

def factorizeInefficient(n):
    teiler = list()
    for i in range(n):
        if i != 0:
            if (n%i)==0:
                teiler.append(i)
    print teiler
我自己刚刚找到了解决方案:这里也有一个range(n)对象,这会导致内存错误


另外一个问题:你们怎么知道这是python 2?(顺便说一句,你是对的…

再数一次你的零;)我认为这太多了。

复制/粘贴
范围()
部分代码:

>>> len(range(1000000000, 10000000030))
9000000030

所以这个范围内实际上有大约90亿个元素。第一个参数可能缺少零,或者第二个参数的零太多;-)

看一看,您可能会发现它很有用。如果您使用的是python 2.7,那么您应该使用xrange而不是range。因为您使用的是python 2,并且
range
将创建一个
列表
对象。仅对于底层数组中的指针,此列表对象将需要类似
9000000030*8*1e-9==72
GB的内容。对于列表中包含的每个实际
int
对象,您可以再添加至少28个字节,使您达到
297
gigabytes。Python 3中的第二个数字
range()
与Python 2中的
xrange()
类似:它在Python 3中返回一个迭代器,而不是列表。所以Python3不关心它有多少元素。Python 2必须构造一个包含那么多元素的列表,而且在一台内存足以容纳90亿整数的机器上运行是极不可能的;-)请注意,如果您在算术中编写大量数字,则更容易避免这些错误,即:
range(1000*1000*1000,1000*1000*1000+30)
这样可以节省跟踪时间,您的计算机甚至不会注意到额外的工作。
>>> len(range(1000000000, 10000000030))
9000000030