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]]