我是 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
}
所以它应该动态创建列表。你能给我一个解决方案吗?
感谢你在期待
我是 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
}
所以它应该动态创建列表。你能给我一个解决方案吗?
感谢你在期待
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
[[], [], [], []]
你无法在 Python 中实现这一点。推荐的方式是使用一个列表来存储你想要的四个列表:
>>> depth = [[]]*4
>>> depth
[[], [], [], []]
或使用和 之类globals
的技巧locals
。但不要那样做。这不是一个好的选择:
>>> for i in range(4):
... globals()['depth_{}'.format(i)] = []
>>> depth_1
[]
我觉得这depth_i
是有风险的,所以不会使用它。我建议您改用以下方法:
depth = [[]]
for i in range(4):
depth.append([])
现在你可以depth_1
通过使用depth[1]
来调用。如果可能,您应该从depth[0]
.
然后您的代码将depth = []
改为。