首页 > 解决方案 > 列表越界

问题描述

def f(x,t):
    return x

t = np.linspace(3, 5, 7)
x = np.zeros(7)
h = 1
i = 0

while i <= len(t):
   x[0] = 0
   x[i+1] = x[i] + h*  f(x[i], t[i]) 
   i += 1

但是我不断得到索引 7 超出了轴 0 大小为 7 的范围,我该如何解决这个问题?

标签: python-3.x

解决方案


在 Python 中,索引从 0 而不是 1 开始。因此,如果要遍历数组,则必须遍历区间[0, len(list)-1]

您的 while 循环包含<=并且还包含索引 7 因为len(t)在您的情况下返回 7 。

另外,在 while 循环中,您正在根据前一个值计算下一个索引 i+1 处的值。因此,当您到达最后一个索引时,您正在尝试根据索引 6 计算索引 7 处的值。但是,索引 7 不存在。你基本上完成了 len(list) - 2

只需将其替换为while i < len(t)-1. 您将迭代直到索引 5 并计算索引 6 的值,这是列表的最后一个索引


推荐阅读