【发布时间】:2020-07-23 20:36:54
【问题描述】:
在 python 中。赋值运算符用作 deepcopy() 还是 copy()? 例如,如果我将列表“a”分配给列表“b”。 它是创建列表“a”的浅拷贝还是深拷贝?
【问题讨论】:
标签: list copy deep-copy assignment-operator shallow-copy
在 python 中。赋值运算符用作 deepcopy() 还是 copy()? 例如,如果我将列表“a”分配给列表“b”。 它是创建列表“a”的浅拷贝还是深拷贝?
【问题讨论】:
标签: list copy deep-copy assignment-operator shallow-copy
既不是copy()也不是deepcopy()。
在 Python 中,所有变量都是引用类型。因此,一旦您将一个列表分配给另一个列表,那么它们都代表相同的地址。因此,如果您 update/add/delete 列表的元素,那么列表 b 中也会发生相同的更改。
所以如果列表只有不可变元素,那么您可以使用copy() 创建副本,但如果列表也有可变元素,那么您需要使用deepcopy()
import copy
b=a.copy() #If list a elements are immutable
c=a.deepcopy() #If list a elements are mutable
【讨论】: