python-3.x - 列表越界
问题描述
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 中,索引从 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 的值,这是列表的最后一个索引
推荐阅读
- stm32 - MCU 上有两个 UART:需要(或明智)FreeRTOS?
- react-native - ios 模拟器 14.5 版上 Yogakit 的致命错误
- google-cloud-platform - 将数据从 GCE VM 实例下载到本地 PC - 它是出口数据吗?
- kubernetes - 使用 ArgoCD CLI 添加新部署集群的问题
- r - 如何使用 mockery 存根 S4 类方法
- javascript - 如何进行平滑的可排序拖放?
- python - 如何删除seaborn散点图顶部和底部的空格
- c# - 创造
运行时的函数 - ios - 无法在启用 Bitcode 的情况下构建 Webrtc
- c# - 如何使用自定义类属性映射对象,该属性返回具有 null 属性值的对象,而不是使用 Automapper 返回 null