我有一个列表,我在程序运行时添加了项目,并且我已经创建了此列表的副本,因此我可以更改/修改/检查副本而不更改原始文件。
这是我到目前为止所得到的:
import copy
originallist.append(stuff)
combined=''.join(originallist)
copyoriginal=copy.deepcopy(originallist)
##this didnt work as copyoriginal stayed empty [] while originallist would change.
#i also tried
copyoriginal=list(originallist)
#AND
copyoriginal=originallist[:]
#and with both cases copyoriginal remained at [] while originallist would change!!
为什么不改变?
答案 0 :(得分:1)
列表副本不会跟踪对原始列表所做的更改;一旦复制完成,python的列表就会彼此完全分开。
如果没有自定义类,您无法尝试做什么。
答案 1 :(得分:0)
如果您想“跟上更改”到另一个列表,您可能需要考虑使用简单的引用而不是副本:
a = [1, 2, 3]
b = a # b refers to a
a[0] = 3
print b # prints [3, 2, 3]
如果您决定停止跟踪更改,可以随时制作副本:
b = b[:]
答案 2 :(得分:0)
如果您希望名称引用同一个对象,您可以这样做:
a = b = []
a.append(1)
b.append(2)
print(b)
# returns [1,2]
这不会让你改变其中一个而不影响另一个,但它会让你看到其中任何一个的变化。