【问题标题】:setting variables in a for loop python在for循环python中设置变量
【发布时间】:2014-05-05 09:39:55
【问题描述】:

我有这个代码

for i in range(10):
    variablename = "file" + str(i)

我希望能够根据i 变量生成变量 就像如果范围是 10 会有这样的变量

  • 文件1
  • 文件2
  • 文件3
  • 文件4
  • 文件5
  • 文件6
  • 文件7
  • 文件8
  • 文件9
  • 文件10

我该怎么做?

【问题讨论】:

  • 你有什么问题?
  • 为什么不使用包含所有文件名的列表?
  • 为什么不用字典呢??
  • 只使用list 和append, look here
  • 好吧,所以我不知道如何使用字典和 Ruben bermudez 我希望它能够工作,无论范围是这样在第四个

标签: python for-loop


【解决方案1】:

你可以使用字典

dict = {}
for i in range(10):
    dict["file" + str(i)] = "value for this var"

那么你可以使用变量名获取一个值

f1 = dict["file1"]

【讨论】:

    【解决方案2】:

    您可以使用包含所有全局变量字典的globals() 函数。如果您不熟悉范围或字典,我建议您阅读这两页

    http://docs.python.org/2/library/stdtypes.html#typesmapping

    Short Description of the Scoping Rules?

    for i in range(10):
        globals()["file" + str(i)] = "newvarvalue!" + str(i)
    print file0
    print file1
    print file2
    print file3
    print file4
    print file5
    print file6
    print file7
    print file8
    print file9
    

    EDIT 从解决方案中删除了 locals()

    【讨论】:

    • 一般来说这是个坏主意……我认为
    • @Joran Beasley 非常同意。
    • @Joran Beasley 然而,它确实直接回答了 op 的问题
    【解决方案3】:

    列表推导

    filenames = ["file%d.txt"%i for i in range(1,11)]
    

    或者如果您希望将它们作为变量名将它们存储在字典中,如P0lyb1us's Answer 中所建议的那样

    【讨论】:

      【解决方案4】:

      您需要给range() 提供两个参数才能使其工作,因此您应该将代码更改为:

      for i in range(1,11):
           variablename = "file" + str(i)
      

      【讨论】:

      • 没有。他只需要将range(10) 改为range(1,11) 即可。
      • 我不认为问题是“为什么我将 file0 而不是 file1 作为我的第一个元素?”而是,“我如何获取这个字符串,并使其成为变量的名称?”
      • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多