在python中动态声明/创建列表

时间:2013-08-07 08:25:26

标签: python list dynamic creation variable-declaration

我是python的初学者,并且需要在python脚本中动态声明/创建一些列表。我需要创建4个列表对象,如depth_1,depth_2,depth_3,depth_4,输入为4.Like

for (i = 1; i <= depth; i++)
{
    ArrayList depth_i = new ArrayList();  //or as depth_i=[] in python
}

这样它就可以动态创建lists.Can你能给我一个解决方案吗?

期待感谢你

3 个答案:

答案 0 :(得分:6)

您可以使用globals()locals()执行您想要的操作。

>>> g = globals()
>>> for i in range(1, 5):
...     g['depth_{0}'.format(i)] = []
... 
>>> depth_1
[]
>>> depth_2
[]
>>> depth_3
[]
>>> depth_4
[]
>>> depth_5
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'depth_5' is not defined

为什么不使用列表清单?

>>> depths = [[] for i in range(4)]
>>> depths
[[], [], [], []]

答案 1 :(得分:4)

你无法在Python中实现这一点。建议的方法是使用列表来存储您想要的四个列表:

>>> depth = [[]]*4
>>> depth
[[], [], [], []]

或使用globalslocals等技巧。但是不要这样做。这不是一个好的选择:

>>> for i in range(4):
...     globals()['depth_{}'.format(i)] = []
>>> depth_1
[]

答案 2 :(得分:3)

我认为depth_i存在风险,因此不会使用它。我建议你改用以下方法:

depth = [[]]

for i in range(4):
    depth.append([])

现在,您只需使用depth_1来呼叫depth[1]即可。如果可能,您应该从depth[0]开始。

然后您的代码将改为depth = []