当在python3
中使用递归时,假设我有一个函数f(a,b)
.('b'是list),在'f'中,我递归调用了'f'多次。如果“f”的子实例对列表“b”进行了一些更改,如何避免“b”中的更改反映在调用父对象f中(我不返回“b”)。
例如,请看下面我的代码。在第二个elif中,我对函数goToDepth
进行了两次递归调用。如果某个被调用实例对depthArr
进行了更改,那么更改也会反映在调用函数的depthArr
副本中,我不希望这样。如何避免?
提前多谢了
def goToDepth(headNode,depthArr):
if(headNode==None):
return
elif(not depthArr):
return
elif(depthArr[-1]!=1):
depthArr[-1]=depthArr[-1]-1
goToDepth(headNode.left,depthArr)
goToDepth(headNode.right,depthArr)
elif (depthArr[-1]==1):
headNode.left,headNode.right=headNode.right,headNode.left
depthArr.pop()
goToDepth(headNode.left,depthArr)
goToDepth(headNode.right,depthArr)
else:
return
尝试传递列表的副本:
a[:]
创建浅层副本使用
copy
模块创建深度副本(但这可能是个糟糕的设计)相关问题 更多 >
编程相关推荐