gpt4 book ai didi

python - 为什么在迭代时删除列表中的项目时索引会超出范围?

转载 作者:行者123 更新时间:2023-12-01 07:00:55 25 4
gpt4 key购买 nike

我正在编写一段代码来遍历列表,如果该项目满足特定条件,则会将其添加到不同的列表中并从当前列表中删除。例如:

for item in range(len(myList)):
if (Insert Condition):
newList.append(item)
del(myList[item])

执行此操作时,我收到“列表分配索引超出范围”错误。

发生这种情况是因为循环必须经过的范围现在比列表本身长吗?

最佳答案

Is this occurring because the range that the loop must go through is now longer than the list itself?

是的。当循环开始时,您的循环仅获取列表的长度一次。如果列表最初有 10 个元素,则将从 0 循环到 9。如果您从列表中删除一个元素,最后一个索引将低于 9,但循环仍会一直到 9 并且您将尝试访问不存在的列表索引。

可以通过反向迭代来解决问题。

for item in range(len(myList), 0, -1):
if (insert condition):
newList.append(myList[item])
del(myList[item])

这是有效的,因为删除元素不会影响索引较低的元素。

关于python - 为什么在迭代时删除列表中的项目时索引会超出范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58633685/

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