首页 > 解决方案 > 比较列表中的 int 值会引发索引超出范围错误

问题描述

我正在努力解决这里的问题。我已经尝试了一切,但问题仍然存在。基本上我有一个随机数列表,当我尝试比较循环内的值时,它会抛出“IndexError:列表索引超出范围”

我什至尝试使用 range(len(who) 和 len(who) 。同样的事情。当把 0 改为 int 变量的“currentskill”时它可以工作。我不明白为什么比较两个值会抛出这个错误。它只是没有意义...

我不是在比较一个值,而是在比较索引本身???

编辑:我什至尝试使用 print(i) / print(who[i] 来查看一切是否干净以及停止的位置,而且我绝对不会超出索引

who = [2, 0, 1]
currentskill = 1

for i in who:
        if who[i] == currentskill: # IndexError: list index out of range
            who.pop(i)

标签: python-3.x

解决方案


问题是一旦你开始弹出元素列表大小就会变化

例如,获取大小为 6 的列表,但是您遍历所有索引,直到 len(l)-1 = 6-1 = 5,并且在前一次迭代中删除元素后,索引 5 不存在于列表中。

此问题的解决方案,l = [x for x in l if x] 这里 x 是您要在您正在迭代的列表元素上实现的条件。


推荐阅读