如何在Python中使用简单的索引/数组? 例如,在传统的BASIC语言中,您所需要做的就像
10 Dim V(5)
20 For N = 1 to 5:V(N)=2^N+1/N:? N,V(N):Next
将输出:
1 3.0
2 4.5
3 8.33333333333
4 16.25
5 32.2
如果我想要高斯求积的权重,我可以这样做:
UL=5
[x,w] = p_roots(UL)
for N in range(UL):
print N,w[N]
有效:
1 0.236926885056
2 0.478628670499
3 0.568888888889
4 0.478628670499
5 0.236926885056
但是如果我尝试我的BASIC,就像它似乎是
UL=5
for N in range(1,UL+1):
V[N]=2**N+1.0/N
print N,V[N]
将其拒绝为
V[N]=2**N+1.0/N
NameError: name 'V' is not defined
如果我试图模仿高斯的例子
UL=5
[V]=2**UL+1.0/UL
for N in range(1,UL+1):
print N,V[N]
我得到了
[V]=2**UL+1.0/UL
TypeError: 'float' object is not iterable
就数组/索引而言,V [N]与w [N]不同(在其示例中有效)? 所有Python文档似乎都会涉及更复杂的案例,而不提供更多基本的例子。
答案 0 :(得分:1)
您的错误似乎很清楚:在您的第一个中您根本没有定义V(与您使用Dim V的BASIC版本相比)而在您的第二个中您已将V分配给单个值(2 ** UL + 1.0 / UL),而不是值列表。
但是,您应该注意Python列表不是数组,并且您没有调整它们的大小。相反,你可以通过追加来组合它们。例如,在第一个版本中:
UL = 5
V = []
for N in range(1,UL+1):
V.append(2**N+1.0/N)