gpt4 book ai didi

python - 为什么即使列表在内存中移动,列表的 id 也不会改变?

转载 作者:行者123 更新时间:2023-12-05 03:27:50 26 4
gpt4 key购买 nike

据我所知,动态数组(Python 中的列表)在其大小达到其容量时会在内存中移动。据我所知,一个对象的 id 对应于它的内存地址。

但是当多次将值附加到列表时,它的 id 不会改变(因此它在内存中保持在同一个位置)。

为什么?

a = []

print(id(a)) # 2539296050560

for i in range(1_000_000):
a.append(i)

print(id(a)) # 2539296050560

最佳答案

您混淆了列表的地址(CPython 中的 id 是什么)和数据 的地址。在幕后和 CPython 中,列表是一个包含指向其数据开头的指针的对象。因此,当您扩展列表时,数据将在内存中移动,但列表对象不会移动,从而允许它保留固定 ID - 这是每种语言所必需的。

关于python - 为什么即使列表在内存中移动,列表的 id 也不会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71362569/

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