数值迭代 Python

Numerical Iteration Python

对于以下代码:

from array import *
x=[]
x.append(0.232)
print (x)
for i in range(25):
 x[i+1]=(1/(i+1))-5*x[i]

我有这个错误:

x[i+1]=(1/(i+1))-5*x[i]
IndexError: list assignment index out of range

这可能是因为我将 x 定义为一个空数组。但是如何定义数组并执行相同的操作呢?

list 不是为高效的数学运算而设计的,因此最好使用 numpy 数组来进行数学运算。但是,如果你想使用列表,你可以使用

定义一个用 n 零初始化的列表
x=[0]*n
x[0] = 0.232
x[1] = ....
....

请记住,使用上述方法创建的多维 list 将引用数组中的相同元素!例如:

l = [0,0,0]*5

将在另一个 list 中创建五个相同的 list,而不是分开的 list。所以像这样创建多维数组是个坏主意!

更好的方法是使用以下代码使用 numpy 创建数组:

from numpy import empty, zeros
x = empty(n) # or # x = zeros(n)
x[0] = 0.232
x[1] = ....
....

l = empty((3,5)) # or # l = zeros((3,5))

对于 3 行 5 列的数组。