我的一些代码有问题,我觉得我一定遗漏了一些基本的东西。给出与我所遇到的错误相同的简单示例如下:
from numpy import array,zeros
x = array([1,2,3])
f = zeros(len(x))
for i in x:
f[i] = x[i] + 1
回溯如下:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
C:\WINDOWS\system32\<ipython-input-5-6b6b88f30156> in <module>()
1 for i in x:
----> 2 f[i] = x[i] + 1
3
IndexError: index out of bounds
这让我困惑了太久了,但我似乎看不出问题出在哪里?有人可以帮忙吗?
最佳答案
在这个循环中:
for i in x:
f[i] = x[i] + 1
i
取值 1、2,然后是 3。x[i]
不是您想象的那样。 i
已经包含数组 x
的一个单元格的内容。由于数组的索引从 0 开始,因此当您尝试获取索引为 3 的元素(这将是第 4 个元素)时,您会执行 IndexError
。
你可能想要这样的东西:
for i in range(len(x)):
f[i] = x[i] + 1
也可以这样写:
for i, v in enumerate(x):
f[i] = v + 1
关于python - 神秘的 IndexError - 非常基本的问题(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20072445/