[Tutor] Issues with initializing lists

Leona Euler gyromagnetic@excite.com
Fri, 10 Aug 2001 06:57:24 -0700 (PDT)

I am a bit confused about the usage of lists in Python. For an application I
am writing, I would like to create a list of lists with some default values,
and then fill in certain items in the list later. 

As an example:
>>> l1=[[None]*3]*4
>>> l1
[[None, None, None], [None, None, None], [None, None, None], [None, None,

Now, suppose I want to fill in the second item in the second sublist. I try
>>> l1[1][1]='hello'

Then 'l1' looks like

>>> l1
[[None, 'hello', None], [None, 'hello', None], [None, 'hello', None], [None,
'hello', None]]

Note how 'hello' has propagated to each sublist.

Why is this?

I could do

>>> for i in range(4):
... 	l1.append([])
... 	for j in range(3):
... 		l1[i].append(None)
>>> l1
[[None, None, None], [None, 'hello', None], [None, None, None], [None, None,

This looks fine. But this approach really seems excessive. 

My real question is how do I conveniently initialize such a list so that I
can later fill in the sublists?



Send a cool gift with your E-Card