我不明白爲什麼這是拋出「列表索引超出範圍錯誤」。此代碼旨在從列表中刪除重複項。列表索引超出範圍
def remove_duplicates(l):
new_list = l
for i in range(0,len(l)):
store = l[i]
for x in range(i+1,len(l)):
if l[x] == store:
new_list.pop(x)
return new_list
print remove_duplicates([1,1,2,2])
感謝您的所有答案。所以我試了一下(經過相當大的挫折之後),我無法弄清楚這次有什麼不對。
def remove_duplicates(l):
new_list = l[:]
for i in range(0,len(l)):
count = 0
store = l[i]
for x in range(0,len(new_list)):
if l[x] == store:
count += 1
if count >= 2:
new_list.remove(l[i])
return new_list
print remove_duplicates([1,1,2,2])
其中控制檯打印[2,2]。我使用了刪除功能,所以它不能成爲索引錯誤。我不明白它是如何在第二次迭代中刪除1的。我在第二個for循環中遍歷修改後的列表,在if條件中計數不能大於2。
好的謝謝。我遇到了問題。就在你認爲自己寫了一段漂亮的代碼時呢?我喜歡這個論壇上的人們不要放棄它:) – user2474041 2014-09-04 16:40:22
所以我不能用嵌套for循環來解決這個問題嗎? – user2474041 2014-09-04 16:41:49
您可以使用嵌套for循環來完成此操作。你遇到麻煩了,因爲流行改變了你還沒有處理的列表部分。訣竅是向後遍歷列表。 – tdelaney 2014-09-04 16:52:27