不想被改的东西被改了
def fill(a,b):board = a.copy()
blank = b.copy()
temp = ''
for each in blank:
blank.clear()
for i in range(1,10):
if is_valid(each,each,i):
blank.append(str(i))
if len(blank) == 1:
board]] = blank
temp = each
break
if temp:
blank.pop(temp)
board,blank= fill(board,blank)
return board,blank
比如这个代码 我调用的时候用 fill(board,blank)
为什么原始的board和blank也被修改了啊 在函数里明明用了copy() board]] 看这句就知道是个二级嵌套列表,
二级嵌套列表拷贝要用深拷贝,不要用浅拷贝。
因为列表是个可变类型,浅拷贝会导致没法复制更深一层。 因为你用的浅拷贝。 用copy模块的deepcopy 可以用copy模块的deepcopy
import copy
copy.deepcopy()
页:
[1]