IndexError:列表赋值索引超出范围。

时间:2016-12-14 01:21:23

标签: python python-3.x

以下代码引发IndexError,任何人都可以解释为什么此代码的逻辑不起作用?

midterms = [90, 80, 89, 87, 97, 100]
for mark in midterms:
    newMark = mark + 2
    midterms[mark] = newMark
print(midterms)

3 个答案:

答案 0 :(得分:3)

因为您使用列表中包含的值作为索引; mark获取值90, 80, ..., 100。订阅midterm[90]显然已经超出界限。

要迭代这些项目,同时还要处理该位置,Python提供了enumerate,它提供了一个索引以及当前值:

midterms = [90, 80, 89, 87, 97, 100]
for ind, mark in enumerate(midterms):
    newMark = mark + 2
    midterms[ind] = newMark
print(midterms)

这实际上允许迭代列表并毫不费力地更改它。

答案 1 :(得分:1)

如果你是python的新手(我不知道作为初学者进行枚举),另一种想到这个的方法就是使用Jerrybibo的建议。代码看起来像这样:

midterms = [90, 80, 89, 87, 97, 100]
for i in range(len(midterms)):
    newMark = midterms[i] + 2
    midterms[i] = newMark
print(midterms)

答案 2 :(得分:0)

Jim Fasarakis-Hilliard我也有同样的答案。您的代码的另一个解决方法是:

{{1}}

也应该产生

{{1}}