【发布时间】:2019-09-18 05:57:16
【问题描述】:
def move(board, dir):
tempt = []
tempt = board[:]
#print(tempt)
if dir == 'down':
for a in range(Grids):
for b in range(Grids-1, -1, -1):
if board[a][b] != 0:
check = CheckBlock(a, b, dir)
board[a][b].moving(board, dir, check[1], check[0])
#print(tempt)
if dir == 'up':
for a in range(Grids):
for b in range(Grids):
if board[a][b] != 0:
check = CheckBlock(a, b, dir)
board[a][b].moving(board, dir, check[1], check[0])
if dir == 'left':
for a in range(Grids):
for b in range(Grids):
if board[b][a] != 0:
check = CheckBlock(b, a, dir)
board[b][a].moving(board, dir, check[1], check[0])
if dir == 'right':
for a in range(Grids):
for b in range(Grids-1, -1, -1):
if board[b][a] != 0:
check = CheckBlock(b, a, dir)
board[b][a].moving(board, dir, check[1], check[0])
当我偶然发现这个烂摊子时,我正在重新创建一些游戏。因此,这是一个在更改列表本身(即板)的同时移动列表中所有内容的功能。最后,我想确保列表中的某些内容发生了变化。所以我做了一个临时列表(很诱人)并复制了基本列表以供以后比较。但是当基础列表被修改时,临时列表也会被修改。所以这两个#print(tempt) 代码会打印出不同的列表。
我已尽力指出问题,只调用了一次函数,但不知何故,每当我对基本列表进行任何修改时,临时列表都会不断变化。
非常感谢您阅读此处,感谢您提供任何帮助或想法。
【问题讨论】:
-
你知道什么是浅拷贝吗?如果没有,请查看this QA
标签: python python-3.x list function