下面的函数删除列表中的重复元素。我对列表进行排序,然后迭代。如果任何值等于后面的值,则删除该值。IndexError:列表索引超出范围。它应该在范围
def remove_duplicates(myList):
myList.sort()
for i in range(len(myList)-2):
if myList[i] == myList[i+1]:
del myList[i]
print(myList)
remove_duplicates([1,1,2,3,4,4,5,6])
因为我将最终达到在列表的最后一个元素,并没有超出最后一个元素没有元素(即第[i + 1]不存在),然后我得到的指数错误。
这个错误应该是通过遍历一个比通常会是一个完整的迭代,考虑到我们是由1
放眼望去我的要得到正确的输出的事实更少的时间来弥补,我相信我应该写
range(len(myList)-2)
因为-1是最后一个值,-2是之前的值。
事实上,该功能只按预期工作,如果我写
range(leng(myList)-3)
为什么会出现这种情况?看起来-3应该是一个太多?当然-2应该足以说明[i + 1]?
这是真的,我从来没有想到这一点。这完全解释了为什么我需要弥补一个额外的1.谢谢。我会在10分钟内让我接受这个答案。 – PencilCrate
没问题,谢谢! –