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
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
[[], [], [], []]
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
[]
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.