Python浅拷贝和深度拷贝操作

在Python中,有一个名为copy的模块。使用此模块,我们可以执行深层复制和浅层复制。在python中,赋值语句不复制对象。它们在目标和主要对象之间创建绑定。

要使用此模块,我们应该使用-导入它

import copy

方法copy.copy(x)

此方法用于创建对象x的浅表副本。对于浅表复制,将一个对象的引用复制到另一个对象。因此,如果复制的引用上有任何更改,它将更改主对象的内容。

方法copy.deepcopy(x)

此方法用于创建对象x的深层副本。对于深层复制,通过从主对象获取数据来创建单个对象。因此,如果复制的引用上有任何更改,则主要对象将保持不变。

范例程式码

import copy

my_mat = [[11,22,33],[44,55,66],[11,22,33]]

print('Matrix Before Updation: ' + str(my_mat))

new_mat = copy.copy(my_mat) #Make a shallow copy and update on copied object

new_mat[2][0] = 77

new_mat[2][1] = 88

new_mat[2][2] = 99

print('Matrix After Updation: ' + str(my_mat)) #Original Matrix Updated

my_mat = [[11,22,33],[44,55,66],[11,22,33]]

new_mat_deep = copy.deepcopy(new_mat)

print('\nMatrix Before Updation: ' + str(my_mat))

new_mat_deep[2][0] = 77

new_mat_deep[2][1] = 88

new_mat_deep[2][2] = 99

print('Matrix After Updation: ' + str(my_mat)) # Original Matrix unchanged

print('New Matrix: ' + str(new_mat_deep)) # Original Matrix unchanged

输出结果

Matrix Before Updation: [[11, 22, 33], [44, 55, 66], [11, 22, 33]]

Matrix After Updation: [[11, 22, 33], [44, 55, 66], [77, 88, 99]]

Matrix Before Updation: [[11, 22, 33], [44, 55, 66], [11, 22, 33]]

Matrix After Updation: [[11, 22, 33], [44, 55, 66], [11, 22, 33]]

New Matrix: [[11, 22, 33], [44, 55, 66], [77, 88, 99]]

以上是 Python浅拷贝和深度拷贝操作 的全部内容, 来源链接: utcz.com/z/340968.html

回到顶部