|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
小甲鱼老师在python课后作业的052讲的14题代码如下:
list1 = [1, 2]
list2 = [3, 4]
dict1 = {'1':list1, '2':list2}
dict2 = dict1.copy()
dict1['1'][0] = 5
result = dict1['1'][0] + dict2['1'][0]
print(result)
结果为10,这说明 .copy()复制出的字典是会随着原字典的改动而变化的。
小甲鱼老师在python课后作业的052讲的15题代码如下:
import copy
list1 = [1, 2]
list2 = [3, 4]
dict1 = {'1':list1, '2':list2}
dict2 = copy.deepcopy(dict1)
dict1['1'][0] = 5
result = dict1['1'][0] + dict2['1'][0]
print(result)
结果为6,这说明copy.deepcopy()复制出的字典不会随着原字典的改动而变化。
可是我自己做的一些简单尝试却得到不同的结论:
import copy
dict1 = {'1':'one','2':'two'}
dict2 = dict1.copy()
dict3 = copy.deepcopy(dict1)
dict1['1'] = 'three'
print(dict1['1'],dict2['1'],dict3['1'])
这段代码显示的结果是 three one one
说明这两种复制方法都得到id不同的新字典
小白求助各位大神,不懂为什么结果会不同唔
copy是可以开辟一块内存空间,但是不能为元素另外开辟
举个例子
a =[1,2]
b= a.copy()
此时ab毫不相干
但是如果
a = [[1,2],3]
b = a.copy()
那么a中第一个元素如果修改,b中第一个元素也跟着修改
要解决这个问题,才需要使用deepcopy
|
|