深浅复制

复制代码
'''
    深浅复制
        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只复制了第一二层,最后一层与源列表共用,所以一旦修改源列表也被修改了
'''
相关推荐
共享家95277 小时前
408 操作系统第一章
服务器·数据库·windows
Sakura_j_h_9 小时前
GitHub Actions 打包 Windows exe:中文编码与产物上传
windows·ci/cd·打包发布·github·pyinstaller·github actions
xixiaoyunya11 小时前
搭一个浏览器即用的二进制文件分发点:目录规范与权限边界实践
网络·windows
麻瓜code12 小时前
Spring AI 全模块 API 字典一览(1.1.0 版)
人工智能·windows·spring
zrc00700714 小时前
steam无法登录 steam错误 登录时出现错误。请稍后再试。解决办法 steam无法登录解决办法 湖南地区steam DNS问题解决办法
windows·经验分享·游戏·缓存·游戏程序·创业创新·玩游戏
BK贝壳14 小时前
布尔队列 BHA_Queue:入队出队均摊 O(1);附 BHA_Dict
windows
-星空下无敌15 小时前
Windows Docker K8s 安装部署Naocs ,SpringBoot 3.x 4.x 整合Naocs 版本兼容 配置中心、服务注册与发现
windows·docker·nacos·kubernetes·springboot·alibaba
燃烧的枫15 小时前
Windows 下 YOLO11 Pose 的 TensorRT C++ 部署
windows·yolo·tensorrt·1024程序员节·yolo11-pose
深圳恒讯17 小时前
香港云主机硬盘满了怎么办?Linux和Windows在线扩容操作教程
linux·运维·windows
打工仔折腾 AI17 小时前
鸿蒙移动端直连 Windows 远程桌面配置与性能调优实践
人工智能·windows·后端·python·华为·性能优化·harmonyos