queue = [] queue.append(1) # enqueue 1 queue.append(2) # enqueue 2 queue.append(3) # enqueue 3 queue.pop(0) # dequeue (removes 1) queue.pop(0) # dequeue (removes 2) queue.append(4) # enqueue 4 print(queue)
Remember, queue removes from the front (first in) and adds to the back (last in).
After enqueueing 1, 2, 3, the queue is [1, 2, 3]. Dequeue removes 1, then removes 2, leaving [3]. Enqueue 4 adds it to the back, resulting in [3, 4].
Think about a line of people waiting for service.
A queue works like a line where the first person to get in line is the first to be served and leave. This is called First In, First Out (FIFO).
queue = [] queue.pop(0) # dequeue from empty queue
What happens if you try to remove an item from an empty list by index?
Trying to pop from an empty list by index causes an IndexError because there is no element at index 0.
queue = [] queue.append(10) # enqueue 10 queue.append(20) # enqueue 20 queue.pop(0) # dequeue (removes 10) queue.append(30) # enqueue 30 queue.pop(0) # dequeue (removes 20) queue.append(40) # enqueue 40 print(queue)
Track each enqueue and dequeue step carefully.
After enqueue 10 and 20, queue is [10, 20]. Dequeue removes 10 → [20]. Enqueue 30 → [20, 30]. Dequeue removes 20 → [30]. Enqueue 40 → [30, 40].
class Queue: def __init__(self): self.items = [] def enqueue(self, item): self.items.append(item) def dequeue(self): if self.items: return self.items.pop(0) return None def __str__(self): return ' -> '.join(str(i) for i in self.items) + ' -> null' q = Queue() q.enqueue(5) q.enqueue(10) q.enqueue(15) q.dequeue() q.enqueue(20) print(str(q))
Remember dequeue removes the first item added.
Enqueue 5, 10, 15 → queue: 5, 10, 15. Dequeue removes 5 → queue: 10, 15. Enqueue 20 → queue: 10, 15, 20. Printed with arrows and null at end.