gpt4 book ai didi

python - IndexError : List index out of range. 应该在范围内

转载 作者:太空宇宙 更新时间:2023-11-04 06:54:46 25 4
gpt4 key购买 nike

以下函数删除列表中的重复元素。我对列表进行排序,然后遍历。如果任何值等于它后面的值,则删除该值。

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 最终将到达列表中的最后一个元素,并且没有超出最后一个元素的元素(即 [i+1] 不存在),所以我得到一个索引错误。

应该通过比通常的完整迭代少一次迭代的时间来纠正这个错误,以说明我们比 i 提前 1 的事实。

为了得到正确的输出,我认为我应该这样写

range(len(myList)-2)

因为-1是最后一个值,-2是之前的值。

事实上,这个函数只有在我写的时候才能正常工作

range(leng(myList)-3)

为什么会这样?看来 -3 应该是太多了?当然 -2 应该足以解释 [i+1]?

最佳答案

失败是因为您在迭代列表的同时删除元素,因此列表的长度发生变化,索引困惑 - 有效索引将会减少.顺便说一下,一个更惯用的删除重复项的解决方案(只要您不关心元素的顺序)是:

 return list(set(myList))

上面使用了 set() 根据定义 消除重复项的事实,所以如果我们从输入列表构建一个集合,然后从该集合构建一个列表,我们将有一个无重复列表 - 尽管元素的顺序可能不同,因为集合不能保证它们的元素保持相同的插入顺序。

关于python - IndexError : List index out of range. 应该在范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36818571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com