gpt4 book ai didi

python - 理解 python 中的列表切片赋值

转载 作者:太空宇宙 更新时间:2023-11-04 03:57:01 28 4
gpt4 key购买 nike

我正在做一个简单的练习来理解列表赋值的机制。如果我将列表 L1 分配给 L2,然后将一个元素附加到 L1,则 L1 和 L2 都会更改。但是,如果我将列表 L3 分配给 L2 的子切片,然后将一个元素附加到 L3,则 L3 中的更改与 L2 断开连接。这是如何实现的? L3 现在实际上指向一个不同的位置,它包含列表的一个子片,而 L1 和 L2 指向相同的位置。是对的吗?

>>> L1 = []
>>> L2 =[1,2,3]
>>> L1 = L2
>>> L1.append(4)
>>> L1
[1, 2, 3, 4]
>>> L2
[1, 2, 3, 4]
>>> L3 =L2[:2]
>>> L3
[1, 2]
>>> L3.append(5)
>>> L3
[1, 2, 5]
>>> L2
[1, 2, 3, 4]

最佳答案

答案很简单:一个赋值分配一个引用。这就是为什么对 L1 的更改在 L2 中可见 - 它们是同一个对象。

然而,切片会创建范围的(浅)副本。因此,对 L3 的更改与 L2 断开连接。

实际上,为了创建一个序列的副本,由于不能直接赋值,可以使用切片代替:

>>> L4 = L2[:]
>>> L4.append(5)
>>> L2
[1, 2, 3, 4]

…然而,这更通常通过构造函数完成,即 L4 = list(L2)

关于python - 理解 python 中的列表切片赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17778010/

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