10

我有一组名为 k1、k2 k3....k52 的变量。它们的变量是列表/numpy 数组,具体取决于场景。本质上,我想在一个循环中对它们执行相同的操作,但是在遍历它们时遇到了麻烦。基本上我想要的是这样的:

for i in arange(0,52):
  'k'+ str(i) = log10(eval('k' + str(i)))

显然我知道上面的方法行不通,但它给出了这个想法。我的实际尝试是这样的:

for i in arange(0,10):

   rate = eval('k' + str(i))
   rate = np.array(rate,dtype=float)
   rate = log10(rate)
   rate.tolist()
   vars()[rate] = 'k' + str(i)

(它已更改为 numpy 数组,因此我可以记录它,然后返回列表,因此我将变量名称更改回原来的名称)感谢您提供的任何帮助。我觉得这是一件很简单的事情,但现在它却让我无法理解。

编辑:非常感谢您的回答,我应该解释说我不能真正将它们存储为一个集合数组,出于我不想进入的原因,它们需要保留为独立变量。

4

2 回答 2

6

该行:

vars()[rate] = 'k' + str(i)

必须替换为:

vars()['k' + str(i)]=rate
于 2013-03-01T16:12:06.587 回答
4

如果项目都是全局的,您可以使用globals()调用来获取映射,然后操作它们:

g = globals()

for i in arange(0,52):
    varname = 'k{}'.format(i)
    g[varname] = log10(g[varname])

但是您真的只想将所有这些项目存储在列表或字典中。

于 2013-03-01T15:56:24.577 回答