如果有一个对象列表
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
引用相同的对象。
Adeepcopy
将创建一个新对象:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句