我的名为l
的python列表包含100个项目。
如果我这样做,
l = l[25:100]
这会释放前25个项目的内存吗?
如果没有,怎么能实现呢?
答案 0 :(得分:3)
如果没有其他对l
的引用,那么将释放内存。
会发生什么:
l[25:100]
创建一个 new 列表对象,其中引用了l
索引25到100(不包括)的值。l
反弹现在引用新的列表对象。l
约束的旧列表对象的引用计数减1。l
绑定的旧列表对象,并释放内存。答案 1 :(得分:0)
还有一个选项不会分配新列表:del l[:25]
将从现有列表中删除前25个条目,将以下条目移除。对l
的任何其他引用仍将指向它,但它会被更改为更短的列表。
请注意,引用语义也适用于每个项目;他们可能有来自列表以外的其他地方的参考。它也不能保证它们会立即被释放。