Python 创建不同对象的列表副本
如果有一个对象列表Python 创建不同对象的列表副本,python,list,object,duplicates,Python,List,Object,Duplicates,如果有一个对象列表 for i in range(0,10): listA.append(foo(i)) 如何将listA复制到listB中,使对象具有相同的属性,但每个列表中的对象不是相同的对象。如果我这样做 listA[5].bar = 1 这不会修改listB[5]的值。bar 我的目标是生成对象初始列表的多个副本,并能够对每个列表对象进行操作,因为它们是它们自己的实例。您可以使用deepcopy执行所需的操作 下面是一个例子: import copy listA = [1,2,3
for i in range(0,10):
listA.append(foo(i))
如何将listA
复制到listB
中,使对象具有相同的属性,但每个列表中的对象不是相同的对象。如果我这样做
listA[5].bar = 1
这不会修改listB[5]的值。bar
我的目标是生成对象初始列表的多个副本,并能够对每个列表对象进行操作,因为它们是它们自己的实例。您可以使用
deepcopy
执行所需的操作
下面是一个例子:
import copy
listA = [1,2,3,4]
listB = copy.deepcopy(listA)
listB[0] = 7
print("List A: {}".format(listA)) # List A: [1,2,3,4]
print("List B: {}".format(listB)) # List B: [7,2,3,4]
这将创建一个全新的列表listB
,其值与listA
相同
执行简单赋值时,例如:
listA = [1,2,3,4]
listB = listA
print(listA is listB) # True
这将打印True
,因为listA
和listB
引用同一对象
deepcopy
将创建一个新对象:
import copy
listA = [1,2,3,4]
listB = copy.deepcopy(listA)
print(listA is listB) # False
或者,您可以使用list
构造函数创建一个新列表
listA = [1,2,3,4]
listB = list(listA)
print(listA is listB) # False