数值迭代Python

时间:2015-09-02 20:10:04

标签: arrays syntax indexoutofboundsexception numerical-methods

代码如下:

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定义为空数组。但是,如何定义数组并执行相同的操作呢?

1 个答案:

答案 0 :(得分:0)

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列的数组。