Python代码出现list index out of range错误的排查求助
问题解决方案
你的问题出在变量名冲突上:
- 外层循环用
i作为遍历x元素的变量 - 列表推导式里又用
i作为enumerate(x)的索引变量,这会直接覆盖外层的i
第一次循环时,外层i是6237,但进入列表推导式后,i变成了0、1、2、3、4这些索引值,此时n == i的条件变成「元素等于它的索引」,而你的x列表里没有元素符合这个条件,推导出来的列表是空的,取[y[index]](也就是索引0)自然触发「list index out of range」错误。
把列表推导式里的索引变量名改成别的(比如idx)就能解决问题,修正后的代码如下:
x = [6237,5342,9991,6237,1021] y = [0,0,0,0,0] for i in x: index = x.index(i) actualindex = [idx for idx, n in enumerate(x) if n == i][y[index]]
这样列表推导式里的idx负责存储索引,外层的i保持为当前遍历的元素值,n == i就能正确匹配所有等于当前元素的位置,不会再出现空列表的情况。
内容的提问来源于stack exchange,提问作者Yiding Max Tang
相关产品推荐
相关产品推荐

