加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python中的对象存储以及深浅拷贝

发布时间:2020-12-20 10:55:49 所属栏目:Python 来源:网络整理
导读:python的数据存储方式? a = [ 1, 2, 3] b = a a = [ 4, 5, 6] //赋新的值给 a a [ 4, 6] b [ 1, 3] # a 的值改变后,b 并没有随着 a 变 a = [ 1, 3] b = a a[ 0], a[ 1], a[ 2] = 4, 6 //改变原来 list 中的元素 a [ 4, 6] b [ 4, 6] # a 的值改变后,b 随着

python的数据存储方式?

>> a = [1,2,3]
>>> b = a
>>> a = [4,5,6] //赋新的值给 a
>>> a
[4,6]
>>> b
[1,3]
# a 的值改变后,b 并没有随着 a 变
>>> a = [1,3]
>>> b = a
>>> a[0],a[1],a[2] = 4,6 //改变原来 list 中的元素
>>> a
[4,6]
>>> b
[4,6]
# a 的值改变后,b 随着 a 变了

深浅拷贝

浅拷贝:拷贝第一层内容.不拷贝内部子对象,用 [:]或copy() 。赋值,没有创建新对象. 共用同一个对象,他们是相同的,赋值后的变量指向原有的内存地址

深拷贝:拷贝所有内容. 包括内部的所有,形成一个新的对象,虽然与之前的值和内容一模一样,但是它们完完全全的两个对象,用deepcopy()


>>> import copy 
>>> origin = [1,[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,[‘hey!‘,4]]
>>> cop1
[1,4]]
>>> cop2
[1,4]]
#把origin内的子list [3,4] 改掉了一个元素,观察 cop1 和 cop2

?

总结:1、深拷贝是对源对象的赋值(深层对象),占用的内存空间不同2、浅拷贝是对最外层对象进行拷贝,占用的内存空间相同3、深拷贝:数据拷贝更加安全(容灾特性)4、浅拷贝:节省资源和内存空间

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读