在python3
中使用递归时,请说我有一个功能' f(a,b)
'。(' b'是列表) ' 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
答案 0 :(得分:1)
尝试传递列表副本:a[:]
创建浅层副本。
使用copy
模块创建深层副本(但这可能是糟糕的设计)。