=、浅拷贝、深拷贝小结

2017-09-26  本文已影响0人  mlj0503

>>> 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]}

上一篇 下一篇

猜你喜欢

热点阅读