【发布时间】:2016-07-17 12:43:42
【问题描述】:
由于是可变的,当扩展 Python list(例如,mylist.extend() 或 mylist += anotherlist)时,列表的 id 不会改变。
我知道(至少在 CPython 中)列表在内存中是连续的(并且 id 恰好是列表头的地址)。如果列表之后的内存已经高度碎片化并且无法分配列表扩展名(即使有足够的可用空间,尽管该区域不连续)怎么办?分配失败?如何缓解?
【问题讨论】:
-
通过 PyObject 的间接引用非常有意义......当我阅读有关 extend vs += 的线程时,我看到提到列表 ID 是 direct 指向列表头部的指针,所以我最后问了这个。