I want to have a variable that is a nested list of a number of empty lists that I can fill in later. Something that looks like:
my_variable=[[], [], [], []]
However, I do not know beforehand how many lists I will need, only at the creation step, therefore I need a variable a
to determine it.
I thought about simple my_variable=[[]]*a
, but that creates copies of lists and it is not what I want to have.
I could do:
my_variable=[]
for x in range(a):
my_variable.append([])
but I'm looking for a more elegant solution (preferably one-liner). Is there any?
Try a list comprehension:
lst = [[] for _ in xrange(a)]
See below:
>>> a = 3
>>> lst = [[] for _ in xrange(a)]
>>> lst
[[], [], []]
>>> a = 10
>>> lst = [[] for _ in xrange(a)]
>>> lst
[[], [], [], [], [], [], [], [], [], []]
>>> # This is to prove that each of the lists in lst is unique
>>> lst[0].append(1)
>>> lst
[[1], [], [], [], [], [], [], [], [], []]
>>>
Note however that the above is for Python 2.x. On Python 3.x., since xrange
was removed, you will want this:
lst = [[] for _ in range(a)]