gpt4 book ai didi

python - python3 dict.copy 是否仍然只创建浅拷贝?

转载 作者:太空宇宙 更新时间:2023-11-04 09:42:39 25 4
gpt4 key购买 nike

在阅读了包括此处在内的几个地方后:Understanding dict.copy() - shallow or deep?

它声称 dict.copy 将创建一个浅拷贝,也称为对相同值的引用。但是,当我自己在 python3 repl 中使用它时,我只能按值获得一个副本?

a = {'one': 1, 'two': 2, 'three': 3}
b = a.copy()

print(a is b) # False
print(a == b) # True

a['one'] = 5
print(a) # {'one': 5, 'two': 2, 'three': 3}
print(b) # {'one': 1, 'two': 2, 'three': 3}

这是否意味着浅拷贝和深拷贝不一定会影响不可变值?

最佳答案

整数是不可变的,引用对象时会出现问题,检查这个类似的例子:

import copy
a = {'one': [], 'two': 2, 'three': 3}
b = a.copy()
c = copy.deepcopy(a)
print(a is b) # False
print(a == b) # True

a['one'].append(5)
print(a) # {'one': [5], 'two': 2, 'three': 3}
print(b) # {'one': [5], 'two': 2, 'three': 3}
print(c) # {'one': [], 'two': 2, 'three': 3}

给你live

关于python - python3 dict.copy 是否仍然只创建浅拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51069406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com