深浅复制

复制代码
'''
    深浅复制
        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只复制了第一二层,最后一层与源列表共用,所以一旦修改源列表也被修改了
'''
相关推荐
猫头虎14 分钟前
如何在浏览器里体验 Windows在线模拟器:2026最新在线windows模拟器资源合集与技术揭秘
运维·网络·windows·系统架构·开源·运维开发·开源软件
王阿巴和王咕噜6 小时前
【WSL】安装并配置适用于Linux的Windows子系统(WSL)
linux·运维·windows
子琦啊8 小时前
WIN11电脑桌面“固定到开始”菜单失效解决办法
windows·电脑
jjjddfvv9 小时前
超级简单启动llamafactory!
windows·python·深度学习·神经网络·微调·audiolm·llamafactory
深念Y9 小时前
夸克网盘 应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行sxstrace.exe 工具。
windows·bug·报错·系统·更新·网盘·夸克
love530love10 小时前
EPGF 新手教程 21把“环境折磨”从课堂中彻底移除:EPGF 如何重构 AI / Python 教学环境?
人工智能·windows·python·重构·架构·epgf
cngm11013 小时前
记录两个网卡同时访问两个网段的调试方法route print
服务器·网络·windows
Ashley_Amanda14 小时前
Python 常见问题梳理
开发语言·windows·python
码农水水15 小时前
阿里Java面试被问:RocketMQ的消息轨迹追踪实现
java·开发语言·windows·算法·面试·rocketmq·java-rocketmq
WTCLLB15 小时前
cmd-set-ip
网络·windows