Python 更新双链表中的尾部

Python 更新双链表中的尾部,python,python-3.4,doubly-linked-list,Python,Python 3.4,Doubly Linked List,在我的双链表类中,我有一个关于更新self.tail的问题,专门针对我的add\u to\u head方法。我写了一个单独的函数来实现这一点,但我只是想知道是否有更有效的方法来实现它。 以下是我所拥有的: def add_to_head(self, data): '''(input)-> None takes any type of input and creates a node with that input as data. Takes that node a

在我的双链表类中,我有一个关于更新self.tail的问题,专门针对我的add\u to\u head方法。我写了一个单独的函数来实现这一点,但我只是想知道是否有更有效的方法来实现它。 以下是我所拥有的:

def add_to_head(self, data):
    '''(input)-> None
    takes any type of input and creates a node with that input as data.
    Takes that node and adds it to the front of the list
    '''
    new_node = DLLNode(data)
    if self.head == None:
        self.head = self.tail = new_node
    else:
        self.head.prev = new_node
        new_node.next = self.head
        self.head = new_node
    self.update_tail()

def update_tail(self):
    '''(DLLList)->None
    updates the tail of the DLLList
    '''
    current = self.head
    while current != None:
        current = current.next
    current = self.tail
这是假设在创建此类时self.tail和self.head已设置为“无”。另外,我调用此函数的唯一时间是在调用add_to_head方法时,因为当我添加到列表末尾时,我已经在更新尾部。
我还可以用其他什么方法来实现这一点?

我不太清楚您在这里问的是什么。当添加到列表的头部时,您唯一关心尾部的时间是当列表为空时,您已经注意到了这一点。如果列表不为空,则不需要更新尾部。此外,更新尾部功能当前不起任何作用。您似乎没有在
更新尾部中执行任何操作?它不会返回任何东西,也不会产生任何副作用。对此表示抱歉。我的init包含两个变量self.head和self.tail。当我将一个项目添加到列表的前面时,我希望能够跟踪self.tail。我现在意识到我应该首先将最后一行更改为self.tail=current。我只是想知道是否有不同的方法,我只是想出来了。我根本不需要updatetail函数。正如你所说的David,如果列表是空的,我需要更新它,如果它不是我的第一个tail赋值,那么我们输入的值保持不变。谢谢