在Python中生成variables名称

有没有一种方法,我可以在循环中生成python的variables名称,并为它们分配值? 例如,如果我有

prices = [5, 12, 45] 

我想要

 price1 = 5 price2 = 12 price3 = 45 

我可以做一个循环或一些东西,而不是手动分配price2 = prices[1] price1 = prices[0]price2 = prices[1]

谢谢。

编辑

许多人build议我写一个要求这个的理由。 首先,有些时候,我认为这可能比使用列表更方便…我不记得具体是什么时候,但是我想我有使用这个时,有很多层次的嵌套。 例如,如果有一个列表的列表,以上述方式定义variables可能有助于降低嵌套的水平。 其次,今天我想到学习Pytables的使用。 我刚刚遇到了Pytables,并且在定义表的结构时看到,列名和types按以下方式描述:

 class TableFormat(tables.IsDescription): firstColumnName = StringCol(16) secondColumnName = StringCol(16) thirdColumnName = StringCol(16) 

如果我有100列,显式input每列的名称似乎很多工作。 所以,我想知道是否有办法在运行中生成这些列名称。

如果你真的想要dynamic地创build它们,你可以根据你想要在其中创build的命名空间来指定由globals()或locals()返回的字典:

 globals()['somevar'] = 'someval' print somevar # prints 'someval' 

但我不会推荐这样做。 一般来说,避免全局variables。 使用locals()往往会掩盖你真的在做什么。 相反,创build你自己的字典,并分配给它。

 mydict = {} mydict['somevar'] = 'someval' print mydict['somevar'] 

学习python禅宗; 运行这个,好好训练它:

 >>> import this 

虽然我看不出太多的观点,但这里是:

 for i in xrange(0, len(prices)): exec("price%d = %s" % (i + 1, repr(prices[i]))); 

在一个对象上,你可以用setattr来实现

 >>> class A(object): pass >>> a=A() >>> setattr(a, "hello1", 5) >>> a.hello1 5 

另一个可能有助于某人的例子:

 >>> vr={} ... for num in range(1,4): ... vr[str(num)] = 5 + num ... >>> print vr["3"] 8 >>> 

我有你的问题,这是我的答案:

 prices = [5, 12, 45] list=['1','2','3'] for i in range(1,3): vars()["prices"+list[0]]=prices[0] print ("prices[i]=" +prices[i]) 

所以在印刷时:

 price1 = 5 price2 = 12 price3 = 45 

为什么你想把它们放在这样的variables中,你想消耗更多的内存:),为什么不从列表价格[0],价格[1] ….

但是到底什么可能会帮助你

 price1, price2, price3 = prices