PYTHON

Implementing a First-In, First-Out (FIFO) Queue with Deque

Efficiently implement a FIFO queue in Python using `collections.deque` for fast appends and pops from both ends, ideal for managing ordered tasks.

from collections import deque

class Queue:
    def __init__(self):
        self._items = deque()

    def is_empty(self):
        return not bool(self._items)

    def enqueue(self, item):
        self._items.append(item)

    def dequeue(self):
        if self.is_empty():
            raise IndexError("dequeue from empty queue")
        return self._items.popleft()

    def peek(self):
        if self.is_empty():
            raise IndexError("peek from empty queue")
        return self._items[0]

    def size(self):
        return len(self._items)

# Example Usage:
my_queue = Queue()
my_queue.enqueue("Task A")
my_queue.enqueue("Task B")
my_queue.enqueue("Task C")
print(f"Queue size: {my_queue.size()}") # Output: Queue size: 3
print(f"Next item: {my_queue.peek()}") # Output: Next item: Task A
print(f"Dequeued: {my_queue.dequeue()}") # Output: Dequeued: Task A
print(f"Queue size after dequeue: {my_queue.size()}") # Output: Queue size after dequeue: 2
How it works: This snippet illustrates how to implement a First-In, First-Out (FIFO) queue using `collections.deque`. Unlike standard lists where `pop(0)` is inefficient (O(N)), `deque` provides O(1) performance for `append()` (enqueue) and `popleft()` (dequeue), making it highly suitable for queue implementations. This data structure is crucial for scenarios like task scheduling, breadth-first search algorithms, and managing request streams.

Need help integrating this into your project?

Our team of expert developers can help you build your custom application from scratch.

Hire DigitalCodeLabs