user2165857 user2165857 - 4 months ago 64
Python Question

python appending a value to a sublist

I'm running into a problem in my program and I'm not sure what I'm doing wrong. To start I created an empty list of lists. For example:

>>> Lists = [[]]*12


which gives:

>>> Lists
[[], [], [], [], [], [], [], [], [], [], [], []]


However, when trying to append a value to an individual sublist it adds the value to all of the sublists. For example:

>>> Lists[2].append(1)


Gives:

>>> Lists
[[1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]


Is there a way to append to just a single sublist so that the result would look like:

>>> Lists
[[], [], [1], [], [], [], [], [], [], [], [], []]

Answer

List objects are mutable, so you're actually making a list with 12 references to one list. Use a list comprehension and make 12 distinct lists:

Lists = [[] for i in range(12)]

Sorry, I can't find the original duplicate of this exact question

Comments