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
~~