美文网首页
python--深浅拷贝

python--深浅拷贝

作者: 昆仑草莽 | 来源:发表于2019-03-15 13:55 被阅读0次

    python学习中,有这样一个问题,列表的拷贝。当列表有嵌套列表时候,那么在进行复制拷贝的时候就会产生内列表的元素会一改全改,这样有时候会方便我们编程,但有时候却很不方便,所以,在嵌套列表进行拷贝时候就有深浅拷贝,下面我们来看看。

    a = [1,2]
    b = [3,4]
    c = [a,b]
    这时候 c = [[1,2],[3,4]]
    对 c 进行拷贝
    d = c.copy()
    d 的元素与 c 相同。
    id(c)    id(d)  是不相同的,这就说明,c 与 d 不是同一个列表。
    现在我们修改 a 或 b 的值
    c[0][0] = 5
    此时查看 c 和 d ,发现 c 和 d 的值都变了,这是我们在查看id
    id(c[0])   与 id(d[0])  发现id地址是相同的,所有 c 和 d 的内嵌列表内存地址是相同的,也就是说,是同同一个列表,无论怎么修改,都是会同时进行修改的,这就是列表的浅复制。
    为了解决这个问题,我们引进 copy 模块
    import copy
    在执行上面的步骤
    a = [1,2]
    b = [3,4]
    c = [a,b]
    这时候 c = [[1,2],[3,4]]
    对 c 进行拷贝
    d = copy.deepcopy(c)
    d 的元素与 c 相同。
    id(c)    id(d)  是不相同的,这就说明,c 与 d 不是同一个列表。
    对 a  或 b 进行修改,发现 c 或 d 不会在修改一个全改变了,这就是深复制。
    此时查看 a 或 b 的内存地址,发现不一样了。进行了完全的拷贝。 
    

    相关文章

      网友评论

          本文标题:python--深浅拷贝

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