Computer >> Máy Tính >  >> Lập trình >> Python

Các hoạt động sao chép sâu và nông trong Python

Trong Python, có một mô-đun được gọi là sao chép . Sử dụng mô-đun này, chúng tôi có thể thực hiện sao chép sâu và sao chép nông. Trong python, các câu lệnh gán không sao chép các đối tượng. Chúng tạo ra một ràng buộc giữa mục tiêu và đối tượng chính.

Để sử dụng mô-đun này, chúng ta nên nhập nó bằng cách sử dụng -

 nhập bản sao 

Method copy.copy (x)

Phương thức này được sử dụng để tạo một bản sao nông của đối tượng x. Đối với bản sao cạn, một tham chiếu của một đối tượng được sao chép sang một đối tượng khác. Vì vậy, nếu có bất kỳ thay đổi nào trên tham chiếu được sao chép, nó sẽ thay đổi nội dung của đối tượng chính.

Phương thức copy.deepcopy (x)

Phương thức này được sử dụng để tạo một bản sao sâu của đối tượng x. Đối với bản sao sâu, một đối tượng riêng lẻ được tạo bằng cách lấy dữ liệu từ đối tượng chính. Vì vậy, nếu có bất kỳ thay đổi nào trên tham chiếu đã sao chép, đối tượng chính sẽ vẫn như cũ.

Mã mẫu

 import copymy_mat =[[11,22,33], [44,55,66], [11,22,33]] print ('Matrix Before Updation:' + str (my_mat)) new_mat =copy.copy (my_mat) # Tạo một bản sao ngắn và cập nhật trên objectnew_mat đã sao chép [2] [0] =77new_mat [2] [1] =88new_mat [2] [2] =99print ('Ma trận Sau khi Cập nhật:' + str (my_mat)) #Original Matrix Updatedmy_mat =[[11,22,33], [44,55,66], [11,22,33]] new_mat_deep =copy.deepcopy (new_mat) print ('\ nMatrix Trước khi Cập nhật:' + str ( my_mat)) new_mat_deep [2] [0] =77new_mat_deep [2] [1] =88new_mat_deep [2] [2] =99print ('Ma trận sau khi cập nhật:' + str (my_mat)) # Ma trận gốc không đổi dấu ('Ma trận mới:'+ str (new_mat_deep)) # Ma trận gốc không thay đổi 

Đầu ra

 Ma trận trước khi cập nhật:[[11, 22, 33], [44, 55, 66], [11, 22, 33]] Ma trận sau khi cập nhật:[[11, 22, 33], [44, 55, 66], [77, 88, 99]] Ma trận trước khi cập nhật:[[11, 22, 33], [44, 55, 66], [11, 22, 33]] Ma trận sau khi cập nhật:[[11, 22, 33], [44, 55, 66], [11, 22, 33]] Ma trận mới:[[11, 22, 33], [44, 55, 66], [77, 88, 99]]