将其传递给函数后损坏的列表

时间:2017-11-08 19:56:09

标签: python-2.7 list

问题基本上是在我调用一个列表更改内容的列表的函数之后,即使我正在使用list + [something],它应该返回对列表不同的新列表的新引用。

示例代码:

def foo(a):
  #modifying the list using del and remove

def bar(b):
  alist = b
  foo(alist + [something])
  #at this point alist != the original alist

我还尝试使用list(alist)alist + [something]

创建tmp列表

我可以在这里使用pastebin来引用实际代码吗?

1 个答案:

答案 0 :(得分:0)

我猜您的列表alist中包含一些子列表。在这种情况下,即使您执行alist + [something],您仍然会将指针传递给这些子列表以运行foo()

有一个快速而快速的解决方案,只需使用python的deepcopy()函数,如下所示。这将使列表中的所有内容复制到内存中。

from copy import deepcopy
def bar(b):
    b_copy = deepcopy(b)
    foo(b_copy)