gpt4 book ai didi

python - 为什么为列表的切片分配一个新值可以更改 python 中的原始列表

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:40 26 4
gpt4 key购买 nike

# sample 1
a = [1,2,3]
a[:] = [4,5,6]
print(a)
>>> [4,5,6]
# sample 2
a = [1,2,3]
a[:].append(4)
print(a)
>>> [1,2,3]

为什么会这样?a 和 a[:] 的地址不一样,为什么连在一起呢?这两种解决方案有什么区别?

最佳答案

a[:] 在两个示例中的含义/工作方式不同

在第一个例子中:

a[:] = [4,5,6]

您正在使用 slice assignment 分配给 a .它改变了 a 的内容。这是在不更改其引用的情况下完全更改列表的一种方法。

在第二个例子中:

a[:].append(4)

a[:] 创建列表的浅拷贝,就像 list(a)copy.copy(a) 一样,然后代码将 4 附加到 a 的副本,因此,a 没有更改。

关于python - 为什么为列表的切片分配一个新值可以更改 python 中的原始列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47237663/

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