I'm having some trouble with arrays in Python. From what I understand, when a statement such as the one below is used, the NewArray does not contain a copy of the OldArray, but any references to NewArray are simply redirected to OldArray.
NewArray = OldArray
This is demontrated:
Array = [1,1,1,1,1,1] Arr2 = Array Array[0] = 99 print Arr2
returns [99, 1, 1, 1, 1, 1]
I can work around this by doing such.
Array = [1,1,1,1,1,1] Arr2 = Array[:] Array[0] = 99 print Arr2
This doesn't work when I want to call a function that has an array as an argument.
def MakeMove(Board,Rows,Marker,Move): Board = Board[:] for i in range(0,Rows): i = (Rows-1)-i if Board[i][Move]==".": Board[i][Move] = Marker break return Board(Function from a connect 4 game)
Normally, I would use this to actually change the board, in which case it works well.
However, when I want to test a potential new move using this function, it still alters the argument passed to it.
For instance:
TestBoard = MakeMove(TheBoard[:],Rows,Marker,Move)TheBoard variable is changed.
Is there some way to avoid this?
Thanks,
The Panda

Help



Back to top









