我不确定为什么这段代码有效我理解除了行 self._first = self._first 之外的所有内容。接下来为什么这行删除第一个元素

Im not sure why this code works I understand everything except for the line self._first = self._first.next why does this line remove the first element

我有一个工作程序可以删除链表的第一个元素。 我不确定为什么行 self._first = self._first.next 会删除列表的第一个元素。有人可以为我澄清一下吗?

 def remove_first(self) -> Any:
       
        curr = self._first
        if curr is None:
            raise IndexError
        else:
            first = curr.item
            self._first = self._first.next
            return first

你的链表好像是这样实现的:

List .first --> Item #1 .next ---> Item#2 .next --> Item#3 等等

代码将Listclass的成员变量.first重新赋值给Item#2。因此,如果您从 .first 开始遍历列表,则 Item#1 不再“在列表中”。它还会减少 Item#1 的引用计数,这将在引用计数变为零时释放它。