所以我一直在遇到一個非常奇怪的錯誤。我有一個包含列表索引超出範圍內循環索引2
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()
模塊ten.py輸出是這樣的:
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儘管所有這一點,已經在索引= 2時給出了一個超出範圍的異常索引!
for循環中的list_不知道是不是引用list_裏面的go()?我不知道爲什麼會出現這個問題。
固定在list_改變
for i in range(1,max_):
到 爲我:
回溯提到了一個變量'current',但是這個變量沒有出現在你給定的代碼中。也許你應該發佈你正在運行的實際代碼。 – steveha 2013-02-20 20:19:05
對不起,我刪除了該行,但沒有更新回溯。現在編輯。 – 2013-02-20 20:19:47
此外 - 對於一般歐拉 - 你可能會發現這篇文章的興趣http://stackoverflow.com/questions/2068372/fastest-way-to-list-all-primes-below-n-in-python – 2013-02-20 20:19:47