<[EMAIL PROTECTED]> wrote
self.boardarray[row][col] = self.currentPlayer
4, self.boardarray[2][4] will be set to "2". Instead, the program is
setting multiple values within the list as 2. Here is an example
output, when I click on (0,0):
[[2, 0, 0, 0, 0], [2, 0, 0, 0, 0], [2, 0, 0, 0, 0], etc.
This is almost always caused by you initialising the data wrongly.
You have set every item in your list to point to the same sublist.
Something like
L = [[0,0,0] *3]
Now L contains 3 copies of the same list so when you change
any one copy it is reflected in all of the other copies.
L[0][1] = 6
L
[[0,6,0],[0,6,0],[0,6,0]]
You can avoid this by constricting the list using a list comprehension
(or any of several other solutions)
L = [[0,0,0] for n in range(3)]
L[0][1] = 7
L
[[0, 7, 0], [0, 0, 0], [0, 0, 0]]
Remember that Python does everything by references so
a = foo
b = foo
leaves a and b pointing at the same foo object not two
copies of foo. The same applies to lists. If you want a
copy you need to explicitly make a copy.
L1 = [1,2]
L2 = L1[:]
Now L1 and L2 are two separate lists.
HTH,
--
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor