On Sunday 19 August 2007, Pablo Torres wrote: > Hi guys! > > I am working on Conway's Game of Life right now and I've run into a > little problem. > > I represent dead cells with 0s and live ones with 1s. Check this out: > >>> grid = [[0] * 3] * 3 > >>> grid > > [[0, 0, 0], [0, 0, 0], [0, 0, 0]] > > >>> grid[0][0] = 1 > > [[1, 0, 0], [1, 0, 0], [1, 0, 0]] > > Now, that's not what I want. I just want the first element of the > first sublist to be a 1, not the first of every one. Here's what I > tried and didn't work: > > 0. grid = [[0] * 3][:] * 3 then the same grid[0][0] = 1 statement > 1. grid = [[0][:] * 3] * 3 followed by the same assignment > 2. (grid[0])[0] = 1 with the original initialization of the grid > > So, that means that it isn't a problem with two different variables > refering to the same list (0. and 1. prove that). What I don't > understand is why 2. doesn't work either. I'm baby-feeding my > instructions to Python and the mistake is still there. Any ideas?
If you want three copies of the list, you need to copy it thrice (well, twice) Thus: >>> row = [0] * 3 >>> grid = [] >>> for n in xrange(3): grid.append(row[:]) ... >>> grid [[0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> grid[0][0] =1 >>> grid [[1, 0, 0], [0, 0, 0], [0, 0, 0]] >>> -- Regards, Thomas Jollans GPG key: 0xF421434B may be found on various keyservers, eg pgp.mit.edu Hacker key <http://hackerkey.com/>: v4sw6+8Yhw4/5ln3pr5Ock2ma2u7Lw2Nl7Di2e2t3/4TMb6HOPTen5/6g5OPa1XsMr9p-7/-6
signature.asc
Description: This is a digitally signed message part.
-- http://mail.python.org/mailman/listinfo/python-list