美文网首页
python 的深浅copy 与 赋值

python 的深浅copy 与 赋值

作者: 王镇_ee87 | 来源:发表于2020-12-08 09:00 被阅读0次

赋值

对于赋值运算,就是共同指向一个内存地址,将一个值赋予一个变量,那么它的内存地址同时也赋予了他,如果值是不可变类型,改变值,就会产生一个新值和新内存地址。

如果值是可变类型那么内存地址不会变
s1 = 'alex'
s2 = s1   # 赋值
>>> print(s1,s2)
alex 6643192
alex 6643192
当值是可变类型时
s1 = []
s2 = s1
s2.append("a")
>>> print(s1,id(s1))
>>> print(s2,id(s2))
['a'] 12194696
['a'] 12194696

深浅copy

浅层copy 拷贝第一层的数据独立,第二层及以后公用一个内存地址

#copy
l1 = [1,2,3]
l2 = l1.copy()
l1.append(666)   #在第一层里添加数据
>>> print(l1,id(l1))
>>> print(l2,id(l2))
[1,2,3,666] 7410568
[1,2,3] 7392688

l1 = [1,[22,33],2,3]
l2 = l1.copy()
l1[1].append(666)   #在第二层添加数据
>>> print(l1,id(l1))
>>> print(l2,id(l2))
[1,[22,33,666],2,3] 7411700
[1,[22,33,666],2,3] 7411700

深层copy 要引用模块 import copy 对于深copy,无论多少层,在内存中都是两个独立的内存地址

import copy
l1 = [1,[22,33,],2,3]
l2 = copy.deepcopy(l1)
l1.append(777)
l1[1].append(666)
>>> print(l1,id(l1),id(l1[1]))
>>> print(l2,id(l2),id(l2[1]))
[1,[22,33,666],2,3,777] 12617032 12618824
[1,[22,33],2,3] 12617544 12618888

相关文章

  • python 的深浅copy 与 赋值

    赋值 对于赋值运算,就是共同指向一个内存地址,将一个值赋予一个变量,那么它的内存地址同时也赋予了他,如果值是不可变...

  • Python中的浅拷贝和深拷贝

    浅拷贝 赋值 和 copy.copy() Python中的浅拷贝分为直接赋值和使用copy模块的copy方法来进行...

  • Python——"is" , "==" and "深浅copy"

    1."is" 和 "=="的区别是什么? == 比较的是变量的值 is 比较的是变量的内存地址 例如 : a = ...

  • python——深浅copy

    通过下面的输出结果可以很好的看到: 1)深拷贝是直接复制了所有的父对象跟子对象,原来的不管怎么变都跟他没关系 2)...

  • Python 对象拷贝

    Python 赋值只是进行对象的引用。如果拷贝一个对象,则需要使用copy模块。 copy.copy() 进行浅拷...

  • python中的赋值与深浅拷贝

    对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的。 对于浅copy来说,第一层创建的是新的...

  • python中的深浅copy

    深浅拷贝:数据分离情况 1. =赋值:数据完全共享(指向内存中的同一个对象) 被赋值的变量指向的数据和原变量的数据...

  • 【python】copy和赋值

    shallow copy 和 deep copy 【引用】https://blog.csdn.net/u01071...

  • Python深浅拷贝

    预备知识一——python的变量及其存储 在详细的了解python中赋值、copy和deepcopy之前,我们还是...

  • Python对象的引用,深拷贝和浅拷贝

    前言 在Python中,Python对象的赋值,深浅拷贝之间是有差异的,今天就来总结一下三者之间的区别. 对象赋值...

网友评论

      本文标题:python 的深浅copy 与 赋值

      本文链接:https://www.haomeiwen.com/subject/mwobwktx.html