8

我是 python 的初学者,遇到了在 python 脚本中动态声明/创建一些列表的要求。我需要在输入 4.Like 时创建 4 个列表对象,例如 depth_1、depth_2、depth_3、depth_4

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

所以它应该动态创建列表。你能给我一个解决方案吗?

感谢你在期待

4

3 回答 3

12

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
[[], [], [], []]
于 2013-08-07T08:28:31.977 回答
6

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

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

或使用和 之类globals的技巧locals。但不要那样做。这不是一个好的选择:

>>> for i in range(4):
...     globals()['depth_{}'.format(i)] = []
>>> depth_1
[]
于 2013-08-07T08:29:15.150 回答
5

我觉得这depth_i是有风险的,所以不会使用它。我建议您改用以下方法:

depth = [[]]

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

现在你可以depth_1通过使用depth[1]来调用。如果可能,您应该从depth[0].

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

于 2013-08-07T08:30:37.367 回答