gpt4 book ai didi

python - 当 "cloning"对象时避免使用 clone = obj *1 是否有特殊原因?

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:16 32 4
gpt4 key购买 nike

this SO thread 中,结果表明,在制作项目副本方面,切片比任何方法都快。

使用:

list1 = ['foo','bar']
copy1 = list1 * 1
list1.pop()
print 'list1: ' + list1
print 'copy1: ' + copy1

我得到:

list1: ['foo']
copy1: ['foo', 'bar']

有什么特别的理由要避免制作这样的副本吗?

最佳答案

不要忘记您正在复制对同一对象的引用,这不是您(通常)所期望的:

如果您想创建一个包含 3 个“1”列表的列表:

>>> lst = [[1]] * 3
>>> lst
[[1], [1], [1]]

现在对第一项进行一些操作:

>>> lst[0].append(2)

哎呀,这三个位置都是同一个对象:

>>> lst
[[1, 2], [1, 2], [1, 2]]

我期望 [[1, 2], [1], [1]],但我想这是主观的,这就是为什么我不会使用它。至少对于可变对象来说不是。

关于python - 当 "cloning"对象时避免使用 clone = obj *1 是否有特殊原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28544849/

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