gpt4 book ai didi

Python 切片显示相同的 id 位置

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

我是 Python 的新手,请您解释一下为什么会出现以下情况。考虑以下代码:

>>> A = [1, 2, 3, 4]
>>> B = A[0:2]
>>> print id(A) == id(B)
False
>>> print id(A[0]) == id(B[0])
True #Why?
>>> A[0] = 9
>>> A
[9, 2, 3, 4]
>>> B
[1, 2]
>>> print id(A[0]) == id(B[0])
False #Contradiction?

从上面的代码可以看出,我对列表 A 进行切片并将其复制到 B,但是,为什么 print id(A[0]) == id(B[0])在第一个上评估 True 但在我更改 A 或 B 的值时相反?

最佳答案

当您执行 B = A[0:2] 时,最终基本上是这样做的,作为它的一部分:B[0] = A[0] .因此 A[0] 中的对象(整数 1)与 B[0] 中的对象相同。

当您设置 A[0] = 9 时,这些对象将不再相同。

此外,正如@ŁukaszRogalski 指出的那样,CPython 缓存小整数。所以我们有 A[0] == 1 == B[0]id(1) == id(1)

A[0] == 9 时,9 != 1 == B[0],并且 id(9) != id( 1)

关于Python 切片显示相同的 id 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40178326/

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