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

Python 如何在循环中使用变量来创建特定的变量名,python,Python,假设我想创建唯一的变量名,例如 var1, var2和 var3 我想用索引来创建变量 比如 计数器=0 当计数器对于范围(4)中的i: ... globals()['var{}'。格式(i)]=i ... >>>var0 0 >>>var1 1. >>>var2 2. >>>var3 3. >>>var4 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 NameError:未定义名称“var4” ~~ 这里所有答案的简短版本可能重复的是“不要创建一堆单独的变量,只创建一个集合变量

假设我想创建唯一的变量名,例如
var1
var2
var3

我想用索引来创建变量 比如

计数器=0
当计数器<4时:
变量计数器=。。。
我知道在perl中会是这样的

while $counter < 4 {
  var$counter = ...
}
而$counter<4{
变量$counter=。。。
}

我只是想知道python中是否有类似的东西。

我认为在这种情况下最好使用字典,否则您的变量无法创建结构,所以会非常混乱。因此,您可以:

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
d={}
计数器=0
当k<4时:
key=“var”+str(计数器)#创建密钥
值=…#创造价值
d[键]=值#添加到字典
k+=1#增加1

列表和字典用于解决这个问题

下面是如何使用列表解决它

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

你可以用字典来解释

your_dictionary={}
i=0

而i您可以通过以下方式在
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
~~
./python.exe
win32上的Python 2.7.14(v2.7.14:84471935ed,2017年9月16日,20:19:30)[MSC v.1500 32位(英特尔)]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>对于范围(4)中的i:
...     globals()['var{}'。格式(i)]=i
...
>>>var0
0
>>>var1
1.
>>>var2
2.
>>>var3
3.
>>>var4
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“var4”
~~

这里所有答案的简短版本可能重复的是“不要创建一堆单独的变量,只创建一个集合变量”@Mars抱歉,我把它和其他东西混在一起了,我已经更新了我的答案。谢谢,不,你是对的。我必须测试它并查找它,但在Python3中,它在函数中的工作方式确实不同。我也同意OP在这里的解决方案是错误的,OP可能应该使用字典,但我仍然想知道如何使用技术知识获取
exec(一个字符串,globals(),locals())
。我从来没有做过测试,但可能会有帮助。这似乎也不管用。你不能用Py3中的exec创建新的变量——你只能将它们添加到一个DICI中,这是很久以前遇到的,是的,你是对的,这就是问题所在。这就是我不使用它的主要原因。再次感谢,我会更新我的答案。
for i in xrange(0, 4):
    exec("var_%d = %s" % (i + 1, ...));
{
    "var_0": 0,
    "var_1": 1, 
    "var_2": 2,
    "var_3": 3
}
> ./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
~~