深浅复制

复制代码
'''
    深浅复制
        1.常见的复制方法:
            深copy    copy.deepcopy()
            浅copy    copy.copy()

        面试 - 深浅copy的区别
            >.深浅copy都是用来复制具备嵌套结构可变元素到列表的方式
            >.浅copy只复制第一层,嵌套的元素共享一块内存空间
            >.深copy完全复制,与源列表没有任何关系,完全独立
            >.深copy采用递归的形式依次copy所有嵌套元素
            >.深copy内存使用量大速度较慢,浅copy速度较快且共享地址
'''
from copy import deepcopy

# 1.常见的复制方法
test_list1 = [1, 2, 3]
print("源列表:",test_list1)    #源列表: [1, 2, 3]
# 切片
print("切片:",test_list1[:])  #切片: [1, 2, 3]
# list.copy()
print("list.copy:",list.copy(test_list1))    #list.copy: [1, 2, 3]


#导入内置模块copy
import copy
# 浅copy
print("浅copy:",copy.copy(test_list1))   #浅copy: [1, 2, 3]
# 深copy
print("深copy:",deepcopy(test_list1))    #深copy: [1, 2, 3]


# 2.区别
test_list2 = [[100,200],[300,400],[400,500]]
print(test_list2[1])        #[300, 400]
print(test_list2[1][1])     #400

res1 = copy.copy(test_list2)
res1[0][0] = 888
print("浅copy:",res1)         # 浅copy: [[888, 200], [300, 400], [400, 500]]
print("源列表:",test_list2)    # 源列表: [[888, 200], [300, 400], [400, 500]]
print(id(res1))         #2295848862272
print(id(test_list2))       #1972560430528



test_list3 = [[100,200],[300,400],[400,500]]
res1 = copy.deepcopy(test_list3)
res1[0][0] = 888
print("源列表:",test_list3)        # 源列表: [[100, 200], [300, 400], [400, 500]]
print("深copy:",res1)             # 深copy: [[888, 200], [300, 400], [400, 500]]
'''
    由此可见深copy完全复制源列表,而浅copy只复制了第一二层,最后一层与源列表共用,所以一旦修改源列表也被修改了
'''
相关推荐
lucky67072 小时前
Windows 上彻底卸载 Node.js
windows·node.js
编程小白20263 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
凯子坚持 c4 小时前
CANN 性能剖析实战:从原始事件到交互式火焰图
windows·microsoft
开开心心就好5 小时前
发票合并打印工具,多页布局设置实时预览
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节
獨枭5 小时前
PyCharm 跑通 SAM 全流程实战
windows
仙剑魔尊重楼6 小时前
音乐制作电子软件FL Studio2025.2.4.5242中文版新功能介绍
windows·音频·录屏·音乐·fl studio
PHP小志6 小时前
Windows 服务器怎么修改密码和用户名?账户被系统锁定如何解锁
windows
专注VB编程开发20年7 小时前
vb.net datatable新增数据时改用数组缓存
java·linux·windows
仙剑魔尊重楼8 小时前
专业音乐制作软件fl Studio 2025.2.4.5242中文版新功能
windows·音乐·fl studio
rjc_lihui9 小时前
Windows 运程共享linux系统的方法
windows