Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python Shallow 및 Deep Copy 작업

<시간/>

Python에는 copy라는 모듈이 있습니다. . 이 모듈을 사용하여 깊은 복사와 얕은 복사를 수행할 수 있습니다. 파이썬에서 대입문은 객체를 복사하지 않습니다. 그들은 대상과 기본 개체 사이에 바인딩을 만듭니다.

이 모듈을 사용하려면 −

를 사용하여 가져와야 합니다.
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]]