gpt4 book ai didi

python - LIST.append(1) 和 LIST = LIST + [1] 之间有什么区别(Python)

转载 作者:太空狗 更新时间:2023-10-29 20:39:11 26 4
gpt4 key购买 nike

当我执行(我正在使用交互式 shell)这些语句时,我得到了:

L=[1,2,3]
K=L

L.append(4)

L
[1,2,3,4]
K
[1,2,3,4]

但是当我做完全相同的事情时,将 L.append(4) 替换为 L=L+[4]我得到:

L
[1,2,3,4]
K
[1,2,3]

这是某种引用资料吗?为什么会这样?

我注意到的另一件有趣的事情是 L+=[4] 的行为类似于 .append,这很奇怪,因为我认为它的行为类似于 L = L + [4]。

如能澄清所有这些,我们将不胜感激。

谢谢

最佳答案

L.append(4)

这会将一个元素添加到现有列表 L 的末尾。

L += [4]

+= 运算符调用神奇的 __iadd__() 方法。事实证明,list 覆盖了 __iadd__() 方法,并使其等同于 extend(),它与 append() ,将元素直接添加到现有列表中。

L = L + [4]

L + [4] 生成一个新列表,它等于 L 最后添加了 4。然后将这个 列表分配回L。因为您已经创建了一个新的列表对象,所以 K 没有被这个赋值改变。

我们可以使用 id() 来识别何时创建了一个新的对象引用:

>>> L = [1, 2, 3]
>>> id(L)
152678284
>>> L.append(4)
>>> id(L)
152678284

>>> L = [1, 2, 3]
>>> id(L)
152680524
>>> L = L + [4]
>>> id(L)
152678316

关于python - LIST.append(1) 和 LIST = LIST + [1] 之间有什么区别(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3638486/

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