我循环遍历列表while loop ,每次x_j_list
将索引递增1。point_elem_j
同时,我向列表添加了一个parameters_list
新值poly_n
。
但是,我收到一个错误
IndexError:列表索引超出范围
它出现就行了poly_n = x_j_list[point_elem_j] - x_col_list[0]
。
在我的完整示例中,我设法进行了 21 次迭代(按 list 中的元素数x_j_list
),但我无法计算 list 的parameters_list
最终值,即第 21 个值poly_n
。
问题是什么?
代码:
import numpy as np
x_i_list = [(0.1*np.pi*i) for i in range(0, 11)]
x_j_list = [(0.05*np.pi*j) for j in range(0, 21)]
order = 4
x_col_list = [0.0, 0.3141592653589793, 0.6283185307179586, 0.9424777960769379]
point_elem_j = 0
# пока индекс в сетке x_j_list не достигл длины данного списка:
while point_elem_j <= len(x_j_list):
poly_n = x_j_list[point_elem_j] - x_col_list[0] # считаем первый элемент
parameters_list = [poly_n]
for args, elems in enumerate(x_col_list[1:]):
poly_n = (x_j_list[point_elem_j] - elems) * poly_n # считаем второй и последующие элементы
parameters_list.append(poly_n)
point_elem_j += 1
因为在这一行
while point_elem_j <= len(x_j_list):
您指定变量
point_elem_j
可以达到等于的值的条件,并且当按列表的长度进行索引时,由于明显的原因(从零开始索引)len(x_j_list)
,它总是会出现。IndexError
这是一个更清楚的例子:
让列表的长度= 1
并且你想通过索引等于列表长度的元素进行索引,即 1,很明显,既然列表中有一个元素,那么这个元素的索引将是 0,而不是 1。
因此,为了避免此类错误,您需要知道列表的最后一个元素始终有一个索引
len(a) - 1
: