The dequeue operation is a little more involved than its enqueue counterpart operation. New elements added to our queue end up in the inbound_stack. Instead of removing elements from the inbound_stack, we shift our attention to the outbound_stack. As we said, elements can be deleted from our queue only through the outbound_stack:
if not self.outbound_stack: while self.inbound_stack: self.outbound_stack.append(self.inbound_stack.pop()) return self.outbound_stack.pop()
The if statement first checks whether the outbound_stack is empty or not. If it is not empty, we proceed to remove the element at the front of the queue by doing the following:
If the outbound_stack is empty instead, all ...