以下代码引发IndexError
,任何人都可以解释为什么此代码的逻辑不起作用?
midterms = [90, 80, 89, 87, 97, 100]
for mark in midterms:
newMark = mark + 2
midterms[mark] = newMark
print(midterms)
答案 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)