gpt4 book ai didi

Python 列表帮助

转载 作者:行者123 更新时间:2023-11-28 19:31:03 24 4
gpt4 key购买 nike

简单的Python问题:

示例列表:A = [1,2,3,4,5]

我需要生成另一个列表 B ,它是列表 A 的浅拷贝 ,这样 B 是一个包含相同顺序的相同元素的新列表(这样我就可以替换 B 的一个元素不影响 A)。我该怎么做?


澄清:我想做类似的事情

def some_func(A)
B = {what do I do here to get a copy of A's elements?}
B[0] = some_other_func(B[0])
yet_another_func(B)

根据您的所有答案和 Python 文档,执行我想要的操作的更好方法如下:

def some_func(A)
B = [some_other_func(A[0])] + A[1:]
yet_another_func(B)

感谢您为我指明了正确的方向!

最佳答案

那将是深拷贝,而不是浅拷贝。

默认情况下列表复制浅。这就是为什么 copy module 中有一个 deepcopy 命令的原因.

B = copy.deepcopy(A)

可选地,B = A[:] 就可以了。但为将来牢记 deepcopy。更复杂的数据类型可以从中受益。


添加了关于副本的信息:

浅拷贝:

b = [1,2]
a = b
b[0] = 11
print a // [1,11]

深拷贝:

b = [1,2]
a = b[:]
b[0] = 11
print a // [1,2]

但是,此外:

>>> a = [[1,2]]
>>> b = a[:]
>>> b
[[1, 2]]
>>> a
[[1, 2]]
>>> a[0][0] = 11
>>> a
[[11, 2]]
>>> b
[[11, 2]]
>>>

因此,在这种情况下,元素本身是浅拷贝。

关于Python 列表帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4000345/

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