Mar*_*ver 5 python list append extend
由于是可变的,当 Pythonlist被扩展时(例如mylist.extend()或mylist += anotherlist),列表的 id 不会改变。
list
mylist.extend()
mylist += anotherlist
我知道(至少在 CPython 中)列表在内存中是连续的(并且 id 恰好是列表头的地址)。如果列表后面的内存已经高度碎片化并且无法分配列表扩展(即使有足够的可用空间,尽管该区域不连续)怎么办?分配失败?如何缓解这种情况?
Tim*_*ers 2
在 CPython 中,这是列表和元组分配方式的差异。对于列表,该对象包含指向为列表内容分配的内存的指针。列表对象本身很小,并且永远不需要移动;它指向的向量的地址可以改变任意多次。
对于大多数时候预计会很小的元组对象来说,元组内容的内存确实是直接在元组对象中分配的。但元组无法调整大小,因此在这种情况下不会出现您的场景。
归档时间:
9 年,7 月 前
查看次数:
388 次
最近记录: