为了账号安全,请及时绑定邮箱和手机立即绑定

在python中动态生成变量名

在python中动态生成变量名

精慕HU 2019-06-24 16:58:05
在python中动态生成变量名有没有办法在循环中在python中生成变量名并给它们赋值?例如,如果我有prices = [5, 12, 45]我想要price1 = 5price2 = 12price3 = 45我可以在循环或其他什么地方做这件事,而不是手动分配。price1 = prices[0], price2 = prices[1]等。谢谢。编辑许多人建议我写一个理由来要求这样做。首先,我曾经想过这样做比使用列表更方便.我不记得确切的时间,但我想当有很多层次的嵌套时,我会使用它。例如,如果有一个列表,以上述方式定义变量可能有助于减少嵌套级别。第二,今天我在尝试学习使用Pytable时想到了这一点。我刚刚遇到了Pytable,我看到在定义表的结构时,列名和类型的描述方式如下:class TableFormat(tables.IsDescription):     firstColumnName = StringCol(16)     secondColumnName = StringCol(16)     thirdColumnName = StringCol(16)如果我有100列,那么明确地键入每一列的名称似乎是一项很大的工作。因此,我想知道是否有一种方法可以动态生成这些列名。
查看完整描述

3 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

如果您真的想动态地创建它们,则可以将其分配给由以下任一项返回的dict。globals()locals()取决于要在哪个名称空间中创建它们:

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

但我不建议这么做。通常,避免使用全局变量。使用locals()往往只是模糊了你真正在做的事情。相反,创建自己的数据集并分配给它。

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

学习python禅,运行这个并很好地摸索它:

>>> import this


查看完整回答
反对 回复 2019-06-24
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

虽然我看不出有什么意义,但这里是:

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


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 2202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信