Multi-dimensional list initialization trouble

Scott David Daniels scott.daniels at acm.org
Thu May 25 23:33:31 CEST 2006


jonkje at gmail.com wrote:
> Hello I found this very strange; is it a bug, is it a "feature", am I
> being naughty or what?
> 
>>>> foo = [[0, 0], [0, 0]]
>>>> baz = [ [0]*2 ] * 2
>...
> Why on earth does foo and baz behave differently??

This is a frequently made mistake.
try also:
 >>> bumble = [[0]*2 for 0 in xrange(2)]

Think hard about why that might be.
Then try:

 >>> [id(x) for x in foo]
 >>> [id(x) for x in baz]
 >>> [id(x) for x in bumble]

Now check your upper scalp for lightbulbs.

--Scott David Daniels
scott.daniels at acm.org



More information about the Python-list mailing list