深浅copy

一、赋值运算

l1 = [1,2,3]
l2 = l1
l1.append('barry')
print(l1)  # [1, 2, 3, 'barry']
print(l2)  # [1, 2, 3, 'barry']

dic = {'name':'barry'}
dic1 = dic
dic['age'] = 18
print(dic)  # {'age': 18, 'name': 'barry'}
print(dic1)  # {'age': 18, 'name': 'barry'}

s = 'alex'
s1 = s
print(id(s),id(s1))

二、浅copy

# 浅copy,对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性
l1 = [1,2,3,4]
l2 = l1.copy()
l1.append('barry')
print(l1)  # [1, 2, 3, 4, 'barry']
print(l2)  # [1, 2, 3, 4]

l1 = [1,[22,33,44],3,4]
l2 = l1.copy()
l1[1].append(55)
print(l1)  # [1, [22, 33, 44, 55], 3, 4]
print(l2)  # [1, [22, 33, 44, 55], 3, 4]

三、深copy

# 深copy,对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变
import copy
l1 = [1,[22,33,44],3,4]
l2 = copy.deepcopy(l1)
l1[0] = 111
print(l1)  # [111, [22, 33, 44], 3, 4]
print(l2)  # [1, [22, 33, 44], 3, 4]
l1[1].append('barry')
print(l1)  # [111, [22, 33, 44, 'barry'], 3, 4]
print(l2)  # [1, [22, 33, 44], 3, 4]

 

posted on 2017-10-27 16:16  杨小天  阅读(97)  评论(0)    收藏  举报