美文网首页
=、浅拷贝、深拷贝小结

=、浅拷贝、深拷贝小结

作者: mlj0503 | 来源:发表于2017-09-26 20:49 被阅读0次

    >>> import copy

    =  指向同一个内存空间,操作的是同一个元素

    >>> t1 = {'a':1, 'b':2}

    >>> t2 = t1

    >>> id(t1)

    42559696

    >>> id(t2)

    42559696

    浅拷贝,不同内存空间操作不同对象

    >>> t1 = {'a':1, 'b':2}

    >>> t2 = copy.copy(t1)

    >>> t2

    {'a': 1, 'b': 2}

    >>> t1

    {'a': 1, 'b': 2}

    >>> t2.pop('b')

    2

    >>> t2

    {'a': 1}

    >>> t1

    {'a': 1, 'b': 2}

    但是子元素为可变类型时,它是引用类似于在子元素上使用 ‘’=‘’

    >>> t1 = {'a':1, 'b':2, 'c':[1,2,3]}

    >>> t2 = copy.copy(t1)

    >>> t2['c'][0] = 4

    >>> t2

    {'a': 1, 'b': 2, 'c': [4, 2, 3]}

    >>> t1

    {'a': 1, 'b': 2, 'c': [4, 2, 3]}

    深拷贝:递归的拷贝所有元素,即使子元素使用的是可变类型,深拷贝的结果是完全不相干

    >>> t1 = {'a':1, 'b':2, 'c':[1,2,3]}

    >>> t2 = copy.deepcopy(t1)

    >>> t2['c'][0] = 4

    >>> t2

    {'a': 1, 'b': 2, 'c': [4, 2, 3]}

    >>> t1

    {'a': 1, 'b': 2, 'c': [1 2, 3]}

    相关文章

      网友评论

          本文标题:=、浅拷贝、深拷贝小结

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