【发布时间】:2019-01-09 01:04:25
【问题描述】:
Stack 上有一些相关的问题,但我想尽可能清楚。我正在使用 Python 3
如果我有一个列表,N,我使用以下代码:
N = [1,2,3,4,6,7,8]
for x in N:
N[x] = N[x] * -1
return N
我收到了Index out of range error。我知道您不应该在迭代列表时添加和删除元素,但我想明确定义为什么上面的示例不起作用。对我来说,似乎不应该有问题。在第一次迭代中,x 应该评估为1。所以如果我想编辑N[1],我不明白为什么我不能。
附带说明,我知道enumerate() 是正确的做法。
【问题讨论】:
-
你需要
enumeratefor x, value in enumerate(N): -
您需要更正代码中的缩进。
-
您将
for <elem> in <collection>语法与for i in range(len(<coll>)): <coll>[i]索引混合在一起,只选择了一个;> -
想一想你是否真的希望
x在for循环中拥有列表项的值?或者您希望x具有序列索引值。