Python:如何彻底删除链表?

Via*_*iuk 1 python linked-list

可以说我有这样的类定义Node

class Node:
    def __init__(self, data, next):
        self.data = data
        self.next = next
Run Code Online (Sandbox Code Playgroud)

我还有head指向链表开头的变量。

head = None设置完全删除链表就可以了吗?我想 gc 应该做它的工作吗?

我将它与c/c++您仍然应​​该迭代整个列表并释放每个元素的地方进行比较。

use*_*ica 5

通常,您甚至不需要执行任何操作。当变量的生命周期head结束时,如果您没有对该列表的任何其他引用,则该列表将变得不可访问并符合自动收集的条件。在 CPython 上,它通常会立即被收集,但您不应该依赖它。

如果您希望在变量的生命周期结束之前使列表符合收集条件head,则设置head = None将起作用,就像 一样del head。(请注意,这del意味着“取消设置此变量”,而不是“删除此对象”。)