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 = 99 print Arr2returns [99, 1, 1, 1, 1, 1]
I can work around this by doing such.
Array = [1,1,1,1,1,1] Arr2 = Array[:] Array = 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.
TestBoard = MakeMove(TheBoard[:],Rows,Marker,Move)TheBoard variable is changed.
Is there some way to avoid this?