我想在Python中运行一个程序,循环多次,每次创建一个新的数组 - 即不覆盖任何数据 - 并用循环编号给数组命名,以便我可以在后续循环中调用它。例如,我可能想要在从0到i的循环中创建x0、x1、x2、...、xi等数组,然后在另一个循环中调用这些数组,该循环也运行在相同的变量上。这本质上相当于能够将变量放入字符串中,如
'string %d %(x)'
。请保留HTML标记。'string %d %(x)'
。请保留HTML标记。你可以通过访问globals()
字典来引入新的变量。例如:
for i in range(0,5):
globals()['x'+str(i)] = i
>>> x0, x1, x2, x3, x4
(0, 1, 2, 3, 4)
注意,根据文档,不应使用locals()
字典,因为对它的更改可能不会影响解释器使用的值。
locals()
不起作用之外,它可以正常工作。 - John La Rooyglobals()
字典也许有其原因...)。不了解更多信息,你不能确定这是否适用于此处。 - MartinStettnerarraysDict = {}
for i in range(0,3):
arraysDict['x{0}'.format(i)] = [1,2,3]
print arraysDict
# {'x2': [1, 2, 3], 'x0': [1, 2, 3], 'x1': [1, 2, 3]}
print arraysDict['x1']
# [1,2,3]
arraysList = []
for i in range(0,3):
arraysList.append([1,2,3])
print arraysList
# [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
print arraysList[1]
# [1, 2, 3]
依赖变量名并更改它们不是最好的选择。
正如评论中已经指出的那样,使用字典或列表会更好。
setattr(myobject, 'string', value)
这与执行以下操作相同:myobject.string = value