首页 > 编程语言 >python浅拷贝和深拷贝

python浅拷贝和深拷贝

时间:2022-12-08 10:56:59浏览次数:42  
标签:python 对象 l2 print 拷贝 copy append

python浅拷贝和深拷贝

python中对对象直接赋值其实只是将其换了一个名字,想要对对象进行真正的复制要通过别的方法。

浅拷贝

浅拷贝利用copy()函数就可以实现,它会产生新的对象

l=[1,2,3,4]
l2=l.copy()
print(l,l2)
l.append(5)
print(l,l2)
#[1, 2, 3, 4] [1, 2, 3, 4]
#[1, 2, 3, 4, 5] [1, 2, 3, 4]

这样对原来的列表进行操作不会影响到新列表,如果直接采用赋值的方法则会影响到新的列表。

但是浅拷贝产生的新对象的子类还是指向原对象

l=[[1,2],[3,4]]
l2=l.copy()
print(l,l2)
l.append(5)
print(l,l2)
l[1].append(6)
print(l,l2)
#[[1, 2], [3, 4]] [[1, 2], [3, 4]]
#[[1, 2], [3, 4], 5] [[1, 2], [3, 4]]
#[[1, 2], [3, 4, 6], 5] [[1, 2], [3, 4, 6]]

对原对象元素的操作还会影响到新对象,所以想对子对象进行操作而不影响新对象就要用到深拷贝。

深拷贝

深拷贝需要用到copy模块中的deepcopy()函数

import copy
l=[[1,2],[3,4]]
l2=copy.deepcopy(l)
print(l,l2)
l.append(5)
print(l,l2)
l[1].append(6)
print(l,l2)
#[[1, 2], [3, 4]] [[1, 2], [3, 4]]
#[[1, 2], [3, 4], 5] [[1, 2], [3, 4]]
#[[1, 2], [3, 4, 6], 5] [[1, 2], [3, 4]]

深拷贝之后对原对象元素的操作就不会影响新对象

深拷贝与浅拷贝的区别便是,浅拷贝拷贝父对象,不会拷贝对象内部的子对象,而深拷贝完全拷贝了父对象和子对象。

标签:python,对象,l2,print,拷贝,copy,append
From: https://www.cnblogs.com/102204216zxf/p/16965464.html

相关文章

  • java-net-php-python-s2s酒店管理系统计算机毕业设计程序
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • Python中glob类的使用
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • Python3 多线程并发处理的返回值收集
    库函数threading背景去查询python3多线程,可以找到一大堆关于threading库的博客教程,但是多数是几个线程执行同一个函数(他们博客里各个线程传入的函数参数不同),且没有......
  • python中socke套接字的应用
    socket:问题一:什么是socketsocket(简称套接字)是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服......
  • Centos 7 + python3 + paramiko + netmiko 安装
    转载自 (31条消息)Centos7下安装Python3并通过Pip安装Paramiko与Netmiko_筐瓢大师小吕的博客-CSDN博客             ......
  • 关于解决pip安装python第三方库超时的问题
    直接换源下载1.设置超时时间,安装txt文件内安装包pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simple--default-timeout=1000-rpackages.txt2.指定源安装,推......
  • python requests.cookies.RequestsCookieJar()
    使用python的requests开发爬虫类程序时,经常需要将之前请求返回的set-cookie值,作为下一个请求的cookie发送。比如模拟登录之后的返回的sessionId,就需要作为后续请求的cookie......
  • 名师课堂|Python基础教程 2 变量与数据类型
    学习目标注释的分类及语法变量的作用定义变量认识数据类型一、注释的分类注释最大的作用,是能够增强程序的可读性在Python中,注释分为两类:单选注释和多行注释1.单行注释只能......
  • python中的函数进阶
    1.局部变量和全局变量在函数外定义的不可变数据类型,在函数里面是可读不可写在函数外定义的可变数据类型,在函数里面可读可写不可变类型传入函数,进行的操作不会影响到外面的......
  • python之路44 jQuery语法应用 与Bootstrap框架
    写的略粗糙咨询https://www.cnblogs.com/Dominic-Ji/p/10490669.html作业讲解页面简陋定时器:<inputtype="text"id="d1"><buttonid="startBtn">开始</button><bu......