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
'''

 

posted on 2018-09-25 09:02  魔王李等猴哥的日子  阅读(142)  评论(0编辑  收藏  举报

导航