我的一个功能是将一个项目添加到列表中。然后将此附加列表作为参数发送到两个递归函数中。但是当其中一个被调用函数更新其自己的本地列表时,原始列表会被修改,因为第二个递归函数被修改列表作为输入。 基本上这是我想要做的事情。我想要的 [2] [2,3] [2,4]作为输出,但我得到[2] [2,3]因为原始列表的输出仅被修改。有什么方法可以在两个函数中发送相同的列表。
def Growtree(llst, x):
if len(llst) == 2:
return
llst.append(x)
print(llst)
Growtree(llst,3)
Growtree(llst,4)
答案 0 :(得分:1)
调用Growtree(llst, 4)
时,列表llst
中已有2和3。因此,由于您的if
。
你需要的是复制一份清单(在调用内部的Glowtree之前,这取决于你是否希望修改orignal清单)。
答案 1 :(得分:0)
使用copy.deepcopy()
在函数中修改原始列表的原因通常是在python中传递可变obj时。这是引用的参考。