7-Python深浅复制

深浅复制

深浅复制只相对于列表内嵌套列表.

浅复制:如果内层列表改变,外层不会受到影响,内层会受到影响.

>>> li = [1, 2, 3, 'a', 'b']

>>> l2 = [10, li]

>>> l2

[10, [1, 2, 3, 'a', 'b']]

>>> l3 = l2.copy()

>>> l3

[10, [1, 2, 3, 'a', 'b']]

>>> id(l2)

3070455660

>>> id(l3)

3070454924

>>> id(li)

3070455116

>>> id(l2[1])

3070455116

>>> id(l3[1])

3070455116

>>> li.append('*') 

>>> l2 

[10, [1, 2, 3, 'a', 'b', '*']] 

>>> l3 

[10, [1, 2, 3, 'a', 'b', '*']]    

深复制:如果内层列表改变,它不会受到影响

>>> li = [1, 2, 3, 'a', 'b']

>>> l2 = [10, li]

>>> import copy

>>> ls = copy.deepcopy(l2)

>>> ls

[10, [1, 2, 3, 'a', 'b']]

>>> l2

[10, [1, 2, 3, 'a', 'b']]

>>> id(ls[1])

3070398796

>>> id(l2[1])

3070456620

>>> li.append('change')

>>> ls

[10, [1, 2, 3, 'a', 'b']]

>>> li

[1, 2, 3, 'a', 'b', 'change']

你可能感兴趣的:(7-Python深浅复制)