A Queue Implementation
Just like with a stack, it is possible to “use a Python list as a queue”. Again, for the purpose of illustrating the narrow set of behaviors that define the queue abstract data type, we define a Queue
class to expose only the desired the functionality of an internal list.
Unlike with a stack, the performance implication of using a Python list as a queue is significant. The implementation shown below uses insert(0, item)
to enqueue a new item, which will be an operation.
class Queue(object):
def __init__(self):
self._items = []
def is_empty(self):
return self._items == []
def enqueue(self, item):
self._items.insert(0, item)
def dequeue(self):
return self._items.pop()
def size(self):
return len(self._items)
In practice, many Python programmers will use the standard library’s collections.deque
class to achieve enqueues and dequeues. We will cover deques in depth in the next chapter; for now consider deques to be a combination of a stack and a queue, enabling pushing and popping from both ends.