关于python:基本变量索引

Basic Variable Indexing

如何在python中执行简单的索引/数组?例如,在传统的基本语言中,您所要做的就是

1
2
10 Dim V(5)
20 For N = 1 to 5:V(N)=2^N+1/N:? N,V(N):Next

将输出:

1
2
3
4
5
1  3.0
2  4.5
3  8.33333333333
4  16.25
5  32.2

如果我想要高斯求积的权重,我可以:

1
2
3
4
UL=5
[x,w] = p_roots(UL)
for N in range(UL):
     print N,w[N]

工作原理:

1
2
3
4
5
1  0.236926885056
2  0.478628670499
3  0.568888888889
4  0.478628670499
5  0.236926885056

但是如果我像看起来那样尝试我的基础

1
2
3
4
UL=5
for N in range(1,UL+1):
    V[N]=2**N+1.0/N
    print N,V[N]

拒绝它的原因是

1
2
    V[N]=2**N+1.0/N
NameError: name 'V' is not defined

如果我尝试模仿高斯的例子

1
2
3
4
UL=5
[V]=2**UL+1.0/UL
for N in range(1,UL+1):
    print N,V[N]

我得到

1
2
    [V]=2**UL+1.0/UL
TypeError: 'float' object is not iterable

在数组/索引方面,v[n]是否与w[n]相同(在其示例中适用)?所有的python文档似乎都跳进了更复杂的案例中,而没有提供像上面这样的更基本的例子。


您的错误似乎很明显:第一次您根本没有定义v(与使用dim v的基本版本相比),第二次您将v分配给单个值(2**ul+1.0/ul),而不是值列表。

但是,您应该注意,python列表不是数组,并且您不调整它们的大小。相反,你通过附加来组合它们。例如,在第一个版本中:

1
2
3
4
UL = 5
V = []
for N in range(1,UL+1):
    V.append(2**N+1.0/N)