4

我想在 Python 中运行一个循环多次的程序,每次都创建一个新数组 - 即没有数据被覆盖 - 数组以循环号的引用命名,以便我可以在后续循环中调用它。例如,我可能想在从 0 到 i 的循环中创建数组 x0、x1、x2、...、xi,然后在运行相同变量的另一个循环中调用这些数组中的每一个。(本质上相当于能够将变量放入字符串中'string %d %(x)')。

4

4 回答 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 回答