在python中即时生成变量名

发布于 2021-02-02 23:19:57

有没有一种方法可以在python循环中生成变量名并为其分配值?例如,如果我有

prices = [5, 12, 45]

我想要

price1 = 5
price2 = 12
price3 = 45

我可以在一个循环或某事做,而不是手动分配price1 = prices[0]price2 = prices[1]等等。

编辑

许多人建议我写一个要求这样做的理由。首先,有些时候我认为这可能比使用列表更方便…我不记得确切的时间,但是我想我想过在有很多嵌套级别时使用它。例如,如果具有列表列表的列表,则以上述方式定义变量可能有助于降低嵌套级别。第二,今天我在尝试学习使用Pytables时想到了这一点。我刚遇到Pytables,我发现在定义表的结构时,以下列方式描述了列名和类型:

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

如果我有100列,则显式键入每个列的名称似乎需要很多工作。因此,我想知道是否有一种动态生成这些列名称的方法。

关注者
0
被浏览
73
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    如果你确实想即时创建它们,则可以将其分配给globals()或返回的dict,或者locals()取决于要在其中创建它们的名称空间:

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

    但是我不建议这样做。通常,避免使用全局变量。locals()经常使用只会模糊你的实际工作。相反,创建自己的字典并分配给它。

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

    学习python zen;运行它并做好它:

    >>> import this
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看