2D lists

Gerrit Holl gerrit at nl.linux.org
Fri Jan 24 14:39:28 EST 2003


Wojtek Walczak schreef op woensdag 22 januari om 14:46:47 +0000:
> Why isn't it mentioned in the FAQ (well, at least it's hard to find) ?
> It's a really frequent question, isn't it ? :)

http://www.python.org/doc/FAQ.html#4.50
4.50. My multidimensional list (array) is broken! What gives?
You probably tried to make a multidimensional array like this.

   A = [[None] * 2] * 3

This makes a list containing 3 references to the same list of length two. Changes to one row will show in all rows, which is probably not what you want. The following works much better:

   A = [None]*3
   for i in range(3):
        A[i] = [None] * 2

This generates a list containing 3 different lists of length two.

If you feel weird, you can also do it in the following way:

   w, h = 2, 3
   A = map(lambda i,w=w: [None] * w, range(h))

For Python 2.0 the above can be spelled using a list comprehension:

   w,h = 2,3
   A = [ [None]*w for i in range(h) ]

yours,
Gerrit.

-- 
Asperger Syndroom - een persoonlijke benadering:
	http://people.nl.linux.org/~gerrit/
Het zijn tijden om je zelf met politiek te bemoeien:
	http://www.sp.nl/





More information about the Python-list mailing list