python:动态创建和执行现有变量名称

时间:2017-01-25 16:58:47

标签: python

我需要创建一个包含一系列子列表的ORDERED列表。但我不确定如何迭代已知变量。

这是一个例子。我们假设我有以下子列表:

list_0 = [0, 1, 2]
list_1 = [3, 4, 5, 6]
list_2 = [7, 8, 9]

我试图将列表附加到更大的列表list_all

list_all = [ [0, 1, 2], [3, 4, 5, 6], [7, 8, 9] ]

所以我试图遍历变量名称,但我不确定这是否可能?

list_all = [list_{num}.format(num=i) for i in range(3)]
# SyntaxError

如果list_all包含已知变量的字符串但我显然不需要变量,这似乎有效,我需要这些变量中的数据。

list_all = ['list_{num}'.format(num=i) for i in range(3)]
print list_all
# ['list_0', 'list_1', 'list_2']

所以我想问题是如何动态创建和执行python变量名?我需要这样做,因为列表的数量随每个用例而变化。

1 个答案:

答案 0 :(得分:1)

如果你真的,真的需要这个,你可以从globals()locals()字典中获取变量及其值。

>>> list_0 = [0, 1, 2]
>>> list_1 = [3, 4, 5, 6]
>>> list_2 = [7, 8, 9]
>>> [globals()["list_{}".format(i)] for i in range(3)]
[[0, 1, 2], [3, 4, 5, 6], [7, 8, 9]]

但是,几乎可以肯定,最好将个别列表作为list_all的一部分存储起来,然后将其作为list_all[0]等而不是list_0来访问:< / p>

>>> list_all = []
>>> list_all.append([0, 1, 2])
>>> list_all.append([3, 4, 5, 6])
>>> list_all.append([7, 8, 9])
>>> list_all[0]
[0, 1, 2]