深浅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]
浙公网安备 33010602011771号