我的计划的一小部分。 A和B假设不同但是相同。更改后即使A = B.有什么建议。
def reveal_board(location1, location2, a):
b = a
for char in board:
if char == board[location1 - 1]:
b[location1 - 1] = char
if char == board[location2 - 1]:
b[location2 - 1] = char
else:
b = b
print_board(b)
if board[location1 - 1] == board[location2 - 1]:
return b
else:
return a
答案 0 :(得分:5)
假设a
和b
是一个更复杂的对象,例如列表或字典,那么在分配a
时,您实际上并未复制b = a
。这只会使a
和b
都指向同一个对象。如果您随后修改了b
,则还要修改a
,反之亦然。
如果您想制作副本,请考虑b = list(a)
或b = dict(a)
之类的内容。或者,更一般地说:
import copy
b = copy.copy(a)
甚至
import copy
b = copy.deepcopy(a)
制作deep copy。
答案 1 :(得分:1)
作业b = a
并非复制a
,而只是复制对a
引用的同一列表的引用。要实际复制它,请将作业替换为:
b = a[:]
这将创造一个"浅" a
的副本比使用copy
更简单,更快。
另外,我建议摆脱b
对自己的自我分配。这没有意义。你可以删除它和它上面的else
:
else:
b = b