ใน Python มีโมดูลที่เรียกว่า copy . เมื่อใช้โมดูลนี้ เราสามารถทำการคัดลอกแบบลึกและแบบตื้นได้ ใน python คำสั่งการมอบหมายจะไม่คัดลอกวัตถุ พวกมันสร้างการเชื่อมโยงระหว่างเป้าหมายกับวัตถุหลัก
ในการใช้โมดูลนี้ เราควรนำเข้าโดยใช้ −
import copy
วิธีการ copy.copy(x)
วิธีนี้ใช้เพื่อสร้างสำเนาตื้นของวัตถุ x สำหรับสำเนาตื้น การอ้างอิงของวัตถุจะถูกคัดลอกไปยังวัตถุอื่น ดังนั้นหากมีการเปลี่ยนแปลงใด ๆ ในการอ้างอิงที่คัดลอกก็จะเปลี่ยนเนื้อหาของวัตถุหลัก
วิธีการ copy.deepcopy(x)
วิธีนี้ใช้เพื่อสร้างสำเนาลึกของวัตถุ x สำหรับ Deep Copy วัตถุแต่ละชิ้นจะถูกสร้างขึ้นโดยใช้ข้อมูลจากวัตถุหลัก ดังนั้นหากมีการเปลี่ยนแปลงใด ๆ ในการอ้างอิงที่คัดลอกมา วัตถุหลักจะยังคงเหมือนเดิม
โค้ดตัวอย่าง
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]]