下面的代码引发了一个IndexError,谁能解释一下为什么这段代码的逻辑不起作用?
midterms = [90, 80, 89, 87, 97, 100]
for mark in midterms:
newMark = mark + 2
midterms[mark] = newMark
print(midterms)发布于 2016-12-14 09:24:14
因为您使用列表中包含的值作为索引,所以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)实际上,这允许遍历列表并毫不费力地更改它。
发布于 2016-12-14 09:33:19
如果您是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)发布于 2016-12-14 10:23:19
Jim Fasarakis-Hilliard和我的答案是一样的。代码的另一个解决方法是:
midterms = [90, 80, 89, 87, 97, 100]
print [mark+2 for mark in midterms]它也会产生
[92, 82, 91, 89, 99, 102]
python
https://stackoverflow.com/questions/41133288
复制相似问题