让我说我想做一个唯一的变量名,例如
var1
,
var2
和
var3
我想使用索引来创建变量 例如
counter = 0
while counter < 4:
varcounter = ...
我知道在perl中会是这样
while $counter < 4 {
var$counter = ...
}
我只是想知道python中是否有等效的东西。
答案 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),则无法使用它来更新变量。exec
与dangerouslySetInnerHTML
中的ReactJS
或eval
中的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, ...));