如何在循环中使用变量来创建特定的变量名

时间:2019-11-15 05:06:55

标签: python

让我说我想做一个唯一的变量名,例如 var1var2var3

我想使用索引来创建变量 例如

counter = 0
while counter < 4:
  varcounter = ...

我知道在perl中会是这样

while $counter < 4 {
  var$counter = ...
}

我只是想知道python中是否有等效的东西。

4 个答案:

答案 0 :(得分:1)

您可以为此使用字典

your_dictionary = {}

i=0
while i<4:
    your_dictionary['var_'+str(i)] = i
    i+=1

输出

{
    "var_0": 0,
    "var_1": 1, 
    "var_2": 2,
    "var_3": 3
}
  

请不要使用exec,因为从字符串执行代码会很容易破坏您的代码。这不是一个好习惯。此外,如果在函数内部使用(感谢@Mars),则无法使用它来更新变量。 execdangerouslySetInnerHTML中的ReactJSeval中的js相似,从不建议在生产级应用程序中使用。

答案 1 :(得分:1)

您可以通过以下方式在globals()字典中定义变量,从而以编程方式在全局范围内定义变量:

> ./python.exe
Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:19:30) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> for i in range(4):
...     globals()['var{}'.format(i)] = i
...
>>> var0
0
>>> var1
1
>>> var2
2
>>> var3
3
>>> var4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'var4' is not defined
~~

答案 2 :(得分:0)

我认为在这种情况下最好使用字典,否则您的变量将不会创建结构,因此会造成混乱。因此,您可以这样做:

d = {}
counter = 0
while k < 4: 
    key = "var" + str(counter)    # create key
    value = ...       # create value
    d[key] = value       # add to dictionary
    k += 1      # increment by one

答案 3 :(得分:0)

列表和词典用于解决此确切问题

以下是使用列表解决问题的方法

counter = 0
a=[]
while counter < 4:
   a[counter] = ...

但是,如果您确实需要创建不同的变量名,则可以使用exec

for i in xrange(0, 4):
    exec("var_%d = %s" % (i + 1, ...));