问题基本上是在我调用一个列表更改内容的列表的函数之后,即使我正在使用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]
我可以在这里使用pastebin来引用实际代码吗?
答案 0 :(得分:0)
我猜您的列表alist
中包含一些子列表。在这种情况下,即使您执行alist + [something]
,您仍然会将指针传递给这些子列表以运行foo()
。
有一个快速而快速的解决方案,只需使用python的deepcopy()
函数,如下所示。这将使列表中的所有内容复制到内存中。
from copy import deepcopy
def bar(b):
b_copy = deepcopy(b)
foo(b_copy)