Given the following program, I want the variable bar
to keep the same.
def foo(bar):
bar2 = bar[:]
chg = []
for p in range(4):
for q in range(3):
chg.append([p,q])
for [x,y] in chg:
bar2[x][y] = "xx"
return bar2
def printGrid(grid):
for row in grid:
print " ".join(row)
print
bar = [[str(i) + str(j) for i in range(5)] for j in range(6)]
printGrid(bar)
printGrid(foo(bar))
printGrid(bar)
However, this is the output:
00 10 20 30 40
01 11 21 31 41
02 12 22 32 42
03 13 23 33 43
04 14 24 34 44
05 15 25 35 45
xx xx xx 30 40
xx xx xx 31 41
xx xx xx 32 42
xx xx xx 33 43
04 14 24 34 44
05 15 25 35 45
xx xx xx 30 40
xx xx xx 31 41
xx xx xx 32 42
xx xx xx 33 43
04 14 24 34 44
05 15 25 35 45
I don't understand. The first 2 grids are as expected, but when did bar
change? How can I prevent this from happening?