Python深浅拷贝

Python深浅拷贝

python 复制代码
"""
    python的高级特性 --深浅copy
        1.copy方式

        2.浅copy --只复制第一层,但内层共享地址
            copy.copy()
        3.深copy ---通过递归的形式,完全copy原对象
            copy.deepcopy()
        4.作用场景
            深浅copy他们的核心区别是否使用递归进行copy
            浅copy,只copy表面,内部共享内存地址
            深copy,通过递归copy原对象,与原对象保持独立
            无论深浅copy都适用于可变对象的更深层次的copy
"""

常见copy

python 复制代码
#一.常见的copy方式
list1 = [1,2,3,4,5]
#1.切片
print(list1[:])
#2.内置函数copy()
print(list1.copy())
#.导入内置模块copy
import copy
print(copy.copy(list1))

深浅拷贝

python 复制代码
#二.深浅copy
#1.创建二维列表
test_list1 = [[3,4],[6,7],[8,9]]

#2.测试浅拷贝
res = copy.copy(test_list1)
res[0][0] = 100
print(f"原列表test_list1:{test_list1}")
print(f"copy后的列表:{res}")
print(id(test_list1[0]))
print(id(res[0]))

#3.测试深拷贝
test_list2 = [[3,4],[6,7],[8,9]]
res = copy.deepcopy(test_list2)
print(f"原列表test_list2:{test_list1}")
print(f"copy后的列表:{res}")
print(id(test_list2[0]))
print(id(res[0]))

赋值和拷贝的区别

赋值:只是给变量起了一个新名字,两个变量指向内存中同一个对象(没有复制数据)。

浅拷贝(Shallow Copy):只复制最外层的对象,内部的子对象(如列表里的列表、字典里的列表)仍然是引用关系。

深拷贝(Deep Copy):完全复制原对象及其所有子对象,新对象和原对象在内存中完全独立,互不影响。

相关推荐
朝朝辞暮i6 分钟前
C++ 第 32 课:main()、rclcpp::init()、spin()、shutdown()
开发语言·c++·算法
旋生万物25 分钟前
螺旋角分布的功率谱分析:多窗谱 + FDR 校正
开发语言·python
沫璃染墨37 分钟前
《从零入门Linux系统篇(五十七):线程篇·十——生产者消费者模型进阶:从环形缓冲区到POSIX信号量》
linux·运维·服务器·开发语言·c++·系统架构·信号处理
时间的拾荒人42 分钟前
Qt 窗口系统详解:从菜单栏到对话框的完整指南
开发语言·qt·面试
专业程序开发源1 小时前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计
wuyk5551 小时前
Python 网络爬虫入门到实战 第 04 章:请求头、UA 伪装、超时、异常处理、基础反爬绕过
开发语言·爬虫·python
流形填表1 小时前
题库去重实战:基于题干指纹的重复题清理
开发语言·c#
\光辉岁月/1 小时前
3.java运算符
java·开发语言
kaiyou20261 小时前
用户研究岗秋招,统计分析能力怎么学习和证明?
数据库·python·学习
知识分享小能手1 小时前
C++ 学习教程,从入门到精通,string类和标准模板库 — 完整知识点详解(16)
开发语言·c++·学习