小丑9 发表于 2022-3-27 14:14:58

两个有关拷贝的题,是我搞错了吗,小甲鱼的课后xi

list1 =
list2 =

dict1 = {'1':list1, '2':list2}
dict2 = dict1.copy()

dict1['1'] = 5

result = dict1['1'] + dict2['1']
print(result)
这个是浅拷贝吧,那为什么答案不是6却是10呢?

import copy

list1 =
list2 =

dict1 = {'1':list1, '2':list2}
dict2 = copy.deepcopy(dict1)

dict1['1'] = 5

result = dict1['1'] + dict2['1']
print(result)
这个如果是深拷贝的话那这个的答案不应该是10吗?

ba21 发表于 2022-3-27 15:50:38

明显是你理解反了。

浅拷贝 只拷贝 dict这一层,到了list那里的值它就不拷贝了
dict1 = {'1':list1, '2':list2}。
dict2 = dict1.copy() = {'1':list1, '2':list2}
dict2中list还是保存的引用
它们的list都是指向同一处值list1 = list2 = ,不管你使用dict1修改list中的值,还是dict2修改list中的值,改的都是同一个位置中的值。


深拷贝dict和list都拷贝
dict1 = {'1':list1, '2':list2}。 list1 = list2 =
dict2 = copy.deepcopy(dict1) = {'1':, '2': }。
dict1,dict2中的list都有各自的值

ba21 发表于 2022-3-27 15:52:41

测试看一下值就知道了。
list1 =
list2 =

dict1 = {'1':list1, '2':list2}
dict2 = dict1.copy()

dict1['1'] = 5

print(dict1['1'])
print(dict2['1'])

print()

import copy

list1 =
list2 =

dict1 = {'1':list1, '2':list2}
dict2 = copy.deepcopy(dict1)

dict1['1'] = 5
print(dict1['1'])
print(dict2['1'])
页: [1]
查看完整版本: 两个有关拷贝的题,是我搞错了吗,小甲鱼的课后xi