dynamically declare/create lists in python [closed]

夙愿已清 提交于 2019-11-27 05:53:21

问题


I am a beginner in python and met with a requirement to declare/create some lists dynamically for in python script. I need something like to create 4 list objects like depth_1,depth_2,depth_3,depth_4 on giving an input of 4.Like

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

so that it should dynamically create lists.Can you please provide me a solution to this?

Thanking You in anticipation


回答1:


You can do what you want using globals() or 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

Why don't you use list of list?

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



回答2:


You can not achieve this in Python. The way recommended is to use a list to store the four list you want:

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

Or use tricks like globals and locals. But don't do that. This is not a good choice:

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



回答3:


I feel that depth_i is risky and so wouldn't use it. I'd recommend that you use the following approach instead:

depth = [[]]

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

Now you can just call depth_1 by using depth[1] instead. If possible, you should start from depth[0].

Then your code will be depth = [] instead.



来源:https://stackoverflow.com/questions/18098326/dynamically-declare-create-lists-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!