python中列表、字典的“浅拷贝”

做笔试题的时候,遇到了这个陷阱,之前没有注意

python中,list和dict类型直接赋值是浅拷贝-变量具体相同的值和存储地址。

若要建立新的lsit、dict变量,保证在改变以前的list、dict时候,不会对新的list产生影响。需要借助copy.deepcopy()函数实现深拷贝。

from copy import deepcopy

dict1= {'1':1,'2':2}
dict2 = dict1
dict3 = deepcopy(dict1)
dict1['1'] = 3

print('dict1:',dict1)
print('dict2:',dict2)
print('dict3:',dict3)

输出结果

dict1: {'1': 3, '2': 2}
dict2: {'1': 3, '2': 2}
dict3: {'1': 1, '2': 2}

from copy import deepcopy

list1=[1,2,3]
list2=list1
list3=deepcopy(list1)
list1.append(8)

print(list1)
print(list2)
print(list3)

输出结果

[1, 2, 3, 8]
[1, 2, 3, 8]
[1, 2, 3]

 

 

你可能感兴趣的:(OpenCV学习)