我有一个简单的初学者问题。
如何使此代码起作用:
variable0 = 0
...
variable9 = 9
我尝试过:
for j in range(9):
variable"{}".format(j) = j
和其他类似的东西与eval()和exec()函数。
非常感谢!
答案 0 :(得分:5)
为什么不使用列表以及列表理解:
variable = [i for i in range(10)]
然后,您可以将variable[0]
用作“变量0”,等等。
或者,如一些评论所述
variable = list(range(10))
答案 1 :(得分:4)
如果您确实想这样做,可以这样做:
for j in range(9):
exec("variable{} = j".format(j))
但是正如其他人所说,您可能不应该。
答案 2 :(得分:1)
如果您使用数字,请使用列表:
items = [1, 2, 3, 4, ...]
或
items = range(10)
然后您可以查找items[0]
,items[2]
等
如果您想使用其他标识物品,请使用字典:
items = {
1: 1,
2: 2,
'foo': 'bar'
...
}
您可以使用items[0]
,items['foo']
等进行查找
您还可以使用列表推导或字典推导来定义数据结构,例如
items = {i: i for i in range(10)}
答案 3 :(得分:0)
我认为使用字典更适合此任务:
d = {"variable{}".format(i): i for i in range(10)}
print(d['variable0']) # ==> 0
print(d['variable5']) # ==> 5
print(d['variable9']) # ==> 9
答案 4 :(得分:0)
如果确实需要此特定行为(即时更改变量名),则可以采用一种方法来完成它。我不建议使用此解决方案,因为有更直观的解决方案,而且这种方法也不是一个很好的设计。在这里:
l = locals()
counter = 0;
for i in range(9):
l["variable" + str(counter)] = i
counter += 1
答案 5 :(得分:-1)
我不会真的推荐这样做,但是您可以根据是在模块级别还是在函数内部分配globals()或locals()字典。
for i in range(10): globals()[f'variable{i}'] = 0
def myfunc():
for i in range(10): locals()[f'variable{i}'] = 0