Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建不同对象的列表副本_Python_List_Object_Duplicates - Fatal编程技术网

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