索引器错误:列表分配索引超出范围。

2024-09-29 17:46:47 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码引发了一个IndexError,谁能解释一下为什么这段代码的逻辑不起作用?在

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

Tags: 代码infor逻辑markprintindexerrornewmark
3条回答

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

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

也会产生

[92, 82, 91, 89, 99, 102]

如果您不熟悉python(作为初学者,我不知道enumerate)的另一种方法是使用Jerrybibo的建议。代码如下:

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

因为您使用列表中包含的值作为索引;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)

实际上,这允许遍历列表并轻松地更改它。在

相关问题 更多 >

    热门问题