Two-dimensional arrays

Peter Slizik peter.slizik at pobox.sk
Mon May 26 12:50:04 EDT 2003


   Hi pythoners,

I'm working on a problem in which I have to use 2-dimensional array.
I'm sorry, but I feel I should describe it precisely, so the question 
will be at the end of this mail.

I created the 2-dim array using

 >>> dim = 5
 >>> array = [[0]*dim]*dim

Here's how it looks like (using PrettyPrint):

 >>> pprint.pprint(array)
[[0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0]]

Then I tried to change some elements:

 >>> array[1][2] = 1

The result looks quite strange:

 >>> pprint.pprint(array)
[[0, 0, 1, 0, 0],
  [0, 0, 1, 0, 0],
  [0, 0, 1, 0, 0],
  [0, 0, 1, 0, 0],
  [0, 0, 1, 0, 0]]

After a while of fooling around, I realised the problems is in 
references.  The 2-dim array doesn't consist of five 1-dim arrays, but 
of five references to the same array.

How can I overcome this problem? Or should I use some other approach to 
solve this 2-dim array problem - so trivial in C, but 'unsolvable' in 
Python?

Thanx in advance

Peter





More information about the Python-list mailing list