所以我遇到了一个非常奇怪的错误。我有一个模块 ten.py 包含
import math
def go():
list_ = list(range(3, 100000, 2))
max_ = int(math.sqrt(len(list_)))
print(len(list_))
print(max_)
for i in range(1,max_):
print(i)
current = list_[i]
for j in list_[i+1:]:
if j % i == 0:
list_.remove(j)
go()
输出是这样的:
49999
223
1
2
Traceback (most recent call last):
File "D:\Documents\KomodoProjects\Project Euler\ten.py", line 14, in <module>
go()
File "D:\Documents\KomodoProjects\Project Euler\ten.py", line 10, in go
current = list_[i]
IndexError: list index out of range
如您所见,列表的大小为 49999,for 循环仅达到 223。尽管如此,它已经在 index=2 处给出了超出范围的异常!
for 循环中的 list_ 是否以某种方式不引用 go() 中的 list_?我不知道为什么会出现这个问题。
通过更改修复
for i in range(1,max_):
to for i in list_: