我想在 Python 中运行一个循环多次的程序,每次都创建一个新数组 - 即没有数据被覆盖 - 数组以循环号的引用命名,以便我可以在后续循环中调用它。例如,我可能想在从 0 到 i 的循环中创建数组 x0、x1、x2、...、xi,然后在运行相同变量的另一个循环中调用这些数组中的每一个。(本质上相当于能够将变量放入字符串中'string %d %(x)'
)。
问问题
29211 次
4 回答
4
您可以访问globals()
字典以引入新变量。喜欢:
for i in range(0,5):
globals()['x'+str(i)] = i
在这个循环之后,你得到
>>> x0, x1, x2, x3, x4
(0, 1, 2, 3, 4)
请注意,根据文档,您不应使用locals()
字典,因为对此字典的更改可能不会影响解释器使用的值。
于 2013-04-17T10:35:45.637 回答
2
依赖变量的名称并更改它们并不是最好的方法。
正如人们已经在评论中指出的那样,最好使用 dict 或 list 代替。
于 2013-04-17T10:40:53.553 回答
1
使用字典:
arraysDict = {}
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]
于 2013-04-17T10:42:41.467 回答
0
您可以为此创建一个对象,然后为此使用setattr函数。基本上,它将像这样工作:
setattr(myobject, 'string', value)
这和做的一样:myobject.string = value
于 2013-04-17T10:34:45.230 回答