python - 神秘的 IndexError - 非常基本的问题(Python)

标签 python python-2.7 for-loop numpy

我的一些代码有问题,我觉得我一定遗漏了一些基本的东西。给出与我所遇到的错误相同的简单示例如下:

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/

相关文章:

python - PostgreSQL PL/Python 在性能方面与它之外的 Python 相比如何?

python - 用python检测英文文本

error-handling - Python,导入错误: MaxentClassifier

python - 使用循环动态查找序数 : find th - st - nd - rd

python - 您可以将一个 for 循环嵌套在另一个 for 循环中,并且它们具有相同的循环变量吗?

python - 算命先生列表和 raw_input

python - 创建一个返回法语日期或英语日期的函数

python - 如何在python中打印出两个 "|"之间的子字符串?

python - 基于类的 "Task"模块的好模式吗?

c++ - 检查字符串中每个字符串有多少个(简化)