Python IndexError:索引看似对齐却出现列表赋值索引超出范围报错排查
报错原因与修复方案
报错核心原因
mse_array初始化时是长度为0的空列表,Python不支持对空列表不存在的索引位直接赋值,哪怕i的取值范围符合weights的长度限制,目标列表没有对应索引的存储空间,依然会触发索引越界错误。
修复方案
方案1:使用append()方法追加元素(推荐)
直接将函数返回值追加到列表末尾,无需手动处理索引,同时可以简化遍历逻辑,直接迭代weights的元素:
def test_weights(): w1 = 0.25 w2 = 0.5 w3 = 0.75 w4 = 1 w5 = 1.25 weights = [w1, w2, w3, w4, w5] mse_array = [] for w in weights: mse_array.append(prob3(w))
方案2:预分配列表存储空间
如果需要保留按索引赋值的写法,初始化时预先给mse_array分配和weights等长的占位空间即可:
def test_weights(): w1 = 0.25 w2 = 0.5 w3 = 0.75 w4 = 1 w5 = 1.25 weights = [w1, w2, w3, w4, w5] # 预分配和weights长度一致的列表空间 mse_array = [0.0] * len(weights) for i in range(len(weights)): mse_array[i] = prob3(weights[i])
内容的提问来源于stack exchange,提问作者js2822
相关产品推荐
相关产品推荐

