随笔 - 384  文章 - 0  评论 - 35  阅读 - 142万

python中copy()和deepcopy()

 

深复制即是我们平时说的复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。
浅复制并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。这就和我们寻常意义上的复制有所不同了

复制代码
import copy
origin = [1, 2, [3, 4]]
#origin 里边有三个元素:1, 2,[3, 4]
cop1 = copy.copy(origin)
cop2 = copy.deepcopy(origin)
cop1 == cop2 #True
cop1 is cop2 #False 
#cop1 和 cop2 看上去相同,但已不再是同一个object
origin[2][0] = "hey!" 
origin #[1, 2, ['hey!', 4]]
cop1 #[1, 2, ['hey!', 4]]
cop2 #[1, 2, [3, 4]]
#把origin内的子list [3, 4] 改掉了一个元素,观察 cop1 和 cop2
复制代码

 

不过我们也不经常使用,一般使用的pandas 的copy,那么在pandas的copy函数是深复制还是浅复制?答案如下:

df1 = df.copy(deep=True)  # 深拷贝
df1 = df.copy()           # 深拷贝,默认deep=True
df1 = df.copy(deep=False) # 浅拷贝,仅复制对数据和索引的引用。对浅层副本任何修改都影响原始数据,反之亦然。

 

posted on   小小喽啰  阅读(1446)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示