Python - 从名称列表中传递多个变量

时间:2016-06-02 00:48:48

标签: python

我希望能够对一组名称列在数组中的变量做一些事情,例如:

import numpy as np
Nsim=100
for vec in ['lgx1','lgx2','lgx3']: vec=np.random.uniform(low=0.0, high=1.0, size=Nsim)

这实际上并没有产生编译错误,但它似乎也没有做我想做的事情(即,没有统一设置名为lgx1,lgx2和lgx3的三个数组绘制变量)。这比为每个阵列设置一个这样的命令更紧凑。有什么建议?对于我们这些仍然在说SuperMongo的人,我正在寻找

的python模拟
foreach vec {lgx1 lgx2 lgx3} {set $vec=random(100)}

非常感谢!

1 个答案:

答案 0 :(得分:4)

不要尝试使用从变量构造的变量名。相反,使用字典:

import numpy as np

Nsim=100
arrays = {}

for vec in ['lgx1','lgx2','lgx3']:
    arrays[vec] = np.random.uniform(low=0.0, high=1.0, size=Nsim)

现在你有arrays['lgx1']等等。

或者,因为看起来你正在改变你的名字"只需一个数字,只需使用一个列表:

lgx = []

for _ in range(3):
    lgx.append(np.random.uniform(low=0.0, high=1.0, size=Nsim))

您的数组现在是lgx[0]lgx[1]lgx[2]

这也可以作为列表理解在单个语句中编写:

lgx = [np.random.uniform(low=0.0, high=1.0, size=Nsim) for _ in range(3)]

无论哪种方式,现在可以很容易地将数组作为一个组来使用。