About copy
# 赋值运算 l1 = [1,2,3] l2 = l1 l1.append('a') print(l1,l2)#两者一样 1,2,3,4,5 #copy l1 = [1,2,3] l2 = l1.copy() #print(l1,l2) print(id(l1),id(l2)) l2.append('a') print(l1,l2)#两者不同 地址不同 ''' >>>7548872 7547464 >>>[1, 2, 3] [1, 2, 3, 'a'] ''' l1 = [1,2,[4,5,6],3] l2 = l1.copy() print(l1,id(l1)) print(l2,id(l2)) ''' >>>[1, 2, [4, 5, 6], 3] 17990088 >>>[1, 2, [4, 5, 6], 3] 17969096 ''' l1.append('a') print(l1,l2) l1[2].append('a') print(l1,l2) print(id(l1[2])) print(id(l2[2])) ''' >>>[1, 2, [4, 5, 6], 3, 'a'] [1, 2, [4, 5, 6], 3] >>>[1, 2, [4, 5, 6, 'a'], 3, 'a'] [1, 2, [4, 5, 6, 'a'], 3] >>>12157192 >>>12157192 ''' #单纯的copy只能copy一层,里面嵌套的不可哈希的元素还是浅拷贝 #深拷贝例子 import copy l1 = [1,2,[4,5,6],3] l2 = copy.deepcopy(l1) print(l1,id(l1)) print(l2,id(l2)) l1[2].append('a') print(l1,l2) ''' >>>[1, 2, [4, 5, 6], 3] 18206984 >>>[1, 2, [4, 5, 6], 3] 12157384 >>>[1, 2, [4, 5, 6, 'a'], 3] [1, 2, [4, 5, 6], 3] ''' #切片拷贝例子,也只能拷贝一层 l1 = [1,[1],2,3,4] l2 = l1[:] l1[1].append('a') print(l1,id(l1)) print(l2,id(l2)) print(l1[1] is l2[1]) ''' >>>[1, [1, 'a'], 2, 3, 4] 17727752 >>>[1, [1, 'a'], 2, 3, 4] 18276616 True '''