PYTHON

Implement Efficient Queues and History with `collections.deque`

Utilize Python's `collections.deque` for fast appends and pops from both ends, perfect for implementing queues, recent history, or limited-size caches.

from collections import deque

# Create a deque with a maximum length of 3 (for a history list)
recent_visits = deque(maxlen=3)

# Add items to the right (most recent)
recent_visits.append('homepage')
recent_visits.append('product_page')
print(f"Visits after 2: {list(recent_visits)}") # Convert to list for printing

recent_visits.append('cart_page')
print(f"Visits after 3: {list(recent_visits)}")

# When maxlen is reached, old items are automatically discarded from the left
recent_visits.append('checkout_page')
print(f"Visits after 4 (oldest discarded): {list(recent_visits)}")

# You can also append/pop from the left
recent_visits.appendleft('login_page')
print(f"Visits after appendleft: {list(recent_visits)}")

# Pop items (from right by default, or popleft)
popped_item = recent_visits.pop()
print(f"Popped item: {popped_item}, current visits: {list(recent_visits)}")

# Output:
# Visits after 2: ['homepage', 'product_page']
# Visits after 3: ['homepage', 'product_page', 'cart_page']
# Visits after 4 (oldest discarded): ['product_page', 'cart_page', 'checkout_page']
# Visits after appendleft: ['login_page', 'product_page', 'cart_page']
# Popped item: cart_page, current visits: ['login_page', 'product_page']
How it works: A `collections.deque` (double-ended queue) is a list-like container with fast appends and pops from either end. Unlike regular lists, which are slow for operations at the beginning, deques are highly optimized for these scenarios. They are ideal for implementing queues, managing a fixed-size history (like recently viewed items), or handling log entries where old items need to be efficiently discarded, making them perfect for various web application backend tasks.

Need help integrating this into your project?

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

Hire DigitalCodeLabs