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) |