迭代python中的变量名?

时间:2013-03-01 15:53:14

标签: python variables names

我有一组名为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数组,所以我可以记录它,然后回到列表,所以我将变量名称改回原来的样子)感谢您提供的任何帮助。我觉得这很简单,但它现在逃避了我。

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

2 个答案:

答案 0 :(得分:3)

如果这些项都是全局变量,您可以使用globals()调用来获取映射,然后对它们进行操作:

g = globals()

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

确实想要将所有这些项目存储在列表或字典中。

答案 1 :(得分:1)

该行:

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

必须替换为:

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