Python列表附加问题

时间:2017-03-28 20:45:10

标签: python list append

我的一个功能是将一个项目添加到列表中。然后将此附加列表作为参数发送到两个递归函数中。但是当其中一个被调用函数更新其自己的本地列表时,原始列表会被修改,因为第二个递归函数被修改列表作为输入。 基本上这是我想要做的事情。我想要的 [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)

2 个答案:

答案 0 :(得分:1)

调用Growtree(llst, 4)时,列表llst中已有2和3。因此,由于您的if

,它会返回而不会附加新元素

你需要的是复制一份清单(在调用内部的Glowtree之前,这取决于你是否希望修改orignal清单)。

要复制列表,请参阅https://stackoverflow.com/a/2612815/3410584

答案 1 :(得分:0)

使用copy.deepcopy()

在函数中修改原始列表的原因通常是在python中传递可变obj时。这是引用的参考。