Python 为什么该代码会影响两个板变量?
应该打印两个网格,一个带空格,一个不带空格,但它只打印一个只有空格的网格,从而更改原始表格Python 为什么该代码会影响两个板变量?,python,python-3.x,Python,Python 3.x,应该打印两个网格,一个带空格,一个不带空格,但它只打印一个只有空格的网格,从而更改原始表格 # produce board using randomized baseline pattern board = [ [nums[pattern(r,c)] for c in cols] for r in rows ] qboard = [] for line2 in board: qboard.append(line2) for i in qboard: value = ran
# produce board using randomized baseline pattern
board = [ [nums[pattern(r,c)] for c in cols] for r in rows ]
qboard = []
for line2 in board:
qboard.append(line2)
for i in qboard:
value = randint(0, 9)
i[value]=" "
for i in qboard:
print(i)
for j in board:
print(j)
qboard
实际上是board
的浅拷贝;所有子列表
都是这两个列表中的同一对象。你需要做一个深度拷贝来避免这个问题。最小的更改是使其成为qboard.append(第2行[:])
;更简单的方法是制作qboard=copy.deepcopy(board)
(一次完成所有操作,允许您完全删除board中第2行的:
循环)。