shallow VS deep copy

2018-07-31  本文已影响5人  好小葱1

Copying a list

完全可以将python赋值理解成改变指针指向的操作。

>>> colours1 = ["red", "green"]
>>> colours2 = colours1
>>> colours2 = ["rouge", "vert"]
>>> print colours1
['red', 'green']
deep_copy_1.png
>>> colours1 = ["red", "green"]
>>> colours2 = colours1
>>> colours2[1] = "blue"
>>> colours1
['red', 'blue']
deep_copy_2.png

Copy with the Slice Operator

>>> list1 = ['a','b','c','d']
>>> list2 = list1[:]
>>> list2[1] = 'x'
>>> print list2
['a', 'x', 'c', 'd']
>>> print list1
['a', 'b', 'c', 'd']
>>> 
deep_copy_3.png
>>> lst1 = ['a','b',['ab','ba']]
>>> lst2 = lst1[:]
>>> lst1 = ['a','b',['ab','ba']]
>>> lst2 = lst1[:]
>>> lst2[0] = 'c'
>>> lst2[2][1] = 'd'
>>> print(lst1)
['a', 'b', ['ab', 'd']]
deep_copy_4.png

Using the Method deepcopy from the Module copy

from copy import deepcopy

lst1 = ['a','b',['ab','ba']]

lst2 = deepcopy(lst1)

lst2[2][1] = "d"
lst2[0] = "c";

print lst2
print lst1
$ python deep_copy.py 
['c', 'b', ['ab', 'd']]
['a', 'b', ['ab', 'ba']]
deep_copy_5.png
上一篇 下一篇

猜你喜欢

热点阅读