欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python 深拷贝_详解python的复制,深拷贝和浅拷贝的区别

发布时间:2024/9/30 python 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python 深拷贝_详解python的复制,深拷贝和浅拷贝的区别 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

概述

今天主要来看看Python中的浅拷贝和深拷贝内容,这里用一个实例来说明~


需求:

将一个列表的数据复制到另一个列表中。


思路:

使用列表[:],拿不准可以调用copy模块。


实现方法:

#!/usr/bin/python#将一个列表的数据复制到另一个列表中import copya=[1,2,3,4,['a','b']]b=a #赋值c=a[:] #浅拷贝d=copy.copy(a) #浅拷贝e=copy.deepcopy(a) #深拷贝#输出print('================a改变前================')print('a=',a)print('b=',b)print('c=',c)print('d=',d)print('e=',e)a.append(5)a[4].append('c')#输出print('================a改变后================')print('a=',a)print('b=',b)print('c=',c)print('d=',d)print('e=',e)

输出:


python的复制,深拷贝和浅拷贝的区别

一般有三种方法,

alist=[1,2,3,["a","b"]]

1、直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变

2、copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变

在浅拷贝时,拷贝出来的新对象的地址和原对象是不一样的,但是新对象里面的可变元素(如列表)的地址和原对象里的可变元素的地址是相同的,也就是说浅拷贝它拷贝的是浅层次的数据结构(不可变元素),对象里的可变元素作为深层次的数据结构并没有被拷贝到新地址里面去,而是和原对象里的可变元素指向同一个地址,所以在新对象或原对象里对这个可变元素做修改时,两个对象是同时改变的.

浅拷贝,原对象的list元素改变的话会改变当前对象,如果当前对象中list元素改变了,也同样会影响原对象。


3、深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

深拷贝就是完全跟以前就没有任何关系了,原来的对象怎么改都不会影响当前对象


觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

总结

以上是生活随笔为你收集整理的python 深拷贝_详解python的复制,深拷贝和浅拷贝的区别的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。