在queu中添加数据

2024-05-16 23:00:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我把排队看作是先来的人先到的排队。然后其他人在后面跟着他。为了实现这一点,我用Python编写了以下实现:

class Queue:
    def __init__(self):
        self.item = []
    def enqueue(self,value):
        self.item.append(value)
    def dequeue(self):
        return self.item.pop(0)
    def size(self):
        return len(self.item)
    def isEmpty(self):
        return self.item == []

但当我查看在线教程时,我发现queue有以下实现:

^{pr2}$

根据这个在线实现,第一项是添加项。但是我的直觉告诉我,这个项目应该被添加到列表的后面(附加),从前面移除(移除第一个项目)。我想知道哪种形式是正确的,如果我是不正确的,那么什么是我没有正确理解的东西?在


Tags: 项目selfsizereturnqueueinitvaluedef
2条回答

任何一种方法都有效。我总是同意你最新的直觉在最左边的顺序。在

值得一提的是,这两种实现都是低效的,在零位置插入或弹出都是O(n)操作。在

有关O(1)实现,请参见collections.deque()。在

在行为和表现上没有差别。

第二个示例将队列的头视为最后一个元素,而代码将第一个元素视为头。

我建议您使用对大多数人都直观的实现,我建议您将它附加到列表中,并像您所做的那样从前面弹出。

需要注意的一点是,在两个实现中,在空列表上调用^{{cd1>}将引发^{{cd2>}异常,该异常会泄露实现的详细信息,即它是以列表的形式实现的。如果你觉得不舒服,你可以自己穿上它。

相关问题 更多 >