深浅复制

复制代码
'''
    深浅复制
        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只复制了第一二层,最后一层与源列表共用,所以一旦修改源列表也被修改了
'''
相关推荐
彷徨而立6 小时前
【C/C++】只知道窗口句柄,如何擦除窗口内容,清理窗口?
c语言·c++·windows
guojikun7 小时前
一键配置 Web 前端开发环境(PowerShell 自动化脚本)
windows·web前端·powershell
小白银子9 小时前
零基础从头教学Linux(Day 54)
linux·windows·python
Gary Studio9 小时前
最簡實時性操作系統之任務鏈表
windows
JiKun10 小时前
一键配置 Web 前端开发环境(PowerShell 自动化脚本)
前端·windows·程序员
yuuki23323310 小时前
【C语言】预处理详解
c语言·windows·后端
墨尘笔尖12 小时前
使用子进程实现 C++ 与 Python 交互式控制台
c++·windows·python
许泽宇的技术分享12 小时前
Windows MCP.Net:解锁AI助手的Windows桌面自动化潜能
人工智能·windows·.net·mcp
IT小哥哥呀20 小时前
5 个 Windows 故障排除工具
windows·故障排除·系统运维·windows系统·电脑问题