|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- def fill(a,b):
- board = a.copy()
- blank = b.copy()
- temp = ''
- for each in blank:
- blank[each].clear()
- for i in range(1,10):
- if is_valid(each[0],each[1],i):
- blank[each].append(str(i))
- if len(blank[each]) == 1:
- board[each[0]][each[1]] = blank[each][0]
- temp = each
- break
- if temp:
- blank.pop(temp)
- board,blank= fill(board,blank)
- return board,blank
复制代码
比如这个代码 我调用的时候用 fill(board,blank)
为什么原始的board和blank也被修改了啊 在函数里明明用了copy()
board[each[0]][each[1]] 看这句就知道是个二级嵌套列表,
二级嵌套列表拷贝要用深拷贝,不要用浅拷贝。
因为列表是个可变类型,浅拷贝会导致没法复制更深一层。
|
|