在Python中,深度复制和浅复制是用来复制列表或其他可变对象的方法。深复制会创建一个新的对象,并递归地复制所有的子对象,而浅复制只会复制对象本身,不会复制子对象。
深复制使用copy.deepcopy()函数来实现,它会创建一个完全独立的新对象,原对象和新对象之间没有任何关联。这意味着对新对象的修改不会影响原对象。
示例代码:
import copy original_list = [[1, 2, 3], [4, 5, 6]] deep_copied_list = copy.deepcopy(original_list) print(original_list) # [[1, 2, 3], [4, 5, 6]] print(deep_copied_list) # [[1, 2, 3], [4, 5, 6]] # 修改deep_copied_list不会影响original_list deep_copied_list[0][0] = 100 print(original_list) # [[1, 2, 3], [4, 5, 6]] print(deep_copied_list) # [[100, 2, 3], [4, 5, 6]]
浅复制使用copy.copy()函数来实现,它只复制对象本身,而不复制子对象。这意味着原对象和浅复制后的对象会共享相同的子对象。
示例代码:
import copy original_list = [[1, 2, 3], [4, 5, 6]] shallow_copied_list = copy.copy(original_list) print(original_list) # [[1, 2, 3], [4, 5, 6]] print(shallow_copied_list) # [[1, 2, 3], [4, 5, 6]] # 修改shallow_copied_list会影响original_list shallow_copied_list[0][0] = 100 print(original_list) # [[100, 2, 3], [4, 5, 6]] print(shallow_copied_list) # [[100, 2, 3], [4, 5, 6]]
总结来说,深复制会创建一个完全独立的新对象,而浅复制只会复制对象本身,不会复制子对象。因此,在需要完全独立的对象时,应该使用深复制。而如果需要共享同一组子对象,可以使用浅复制。
版权申明:财旺号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 1790309299@qq.com 举报,一经查实,本站将立刻删除。