0

我需要一种从内存中完全删除列表项的方法。关键是即使一个对象在多个列表中,当我删除它时,它在任何列表中都将不再可用,并且将从内存中完全删除。我试过del,但它不起作用:

a = [Object(), Object()]
b = a[1]
del a[1]

但是 a [1] 的值仍在内存中并且 b != None

如何从内存中完全删除它?

4

1 回答 1

-1

在 Python 中,赋值运算符将右侧表达式的结果绑定到左侧表达式的名称。

所以当你定义这个

a = [Object(), Object()]
b = a[1]
del a[1]

a 是一个对象,b 是另一个对象。当您定义b = a[1]它时,它会提供相同的参考,因为值是相同的。但是当您删除 a[1] 时,它会断开 a[1] 和值之间的连接。但是,b 仍然连接到该值,因此它仍然存在。

在此处输入图像描述

可视化一切的链接

于 2018-08-21T11:58:53.247 回答