In Python, Deques are a generalization of Stacks (Last In First Out) and Queues ( Last In First Out, First In First Out) data structures. Deque stands for “double-ended queue”. Deques support thread-safe, memory efficient appends and pops from either side of the deque with approximately the same O(1) performance in either direction.
List as Stack (LIFO)
stack = ["a", "b", "c"]
# add an element to the end of the list
stack.append("e")
stack.append("f")
print stack
# pop operation
stack.pop()
print stack
# pop operation
stack.pop()
print stack
# push operation
stack.append("d")
print stack
Lists as Queues (LIFO & FIFO)
from collections import deque
dq = deque(['b','c','d'])
print dq
# adding an element to the right of the queue
dq.append('e')
print dq
# adding an element to the left of the queue
dq.appendleft('a')
print dq
# iterate over deque's elements
for elt in dq:
print(elt)
# pop out an element at from the right of the queue
dq.pop()
print dq
# pop out an element at from the right of the queue
dq.popleft()
print dq
# print as list
print list(dq)
# reversed list
print list(reversed(dq))
# empty the deque element
dq.clear()