In [34]:
class Deque():
    def __init__(self):
        self.data = []
        self.Right = 0
        self.Left = 0
        
    def InsertLeft(self, data):
        self.data.insert(self.Left, data)
        self.Right += 1
    
    def InsertRight(self, data):
        self.data.insert(self.Right, data)
        self.Right += 1
        
    def DeleteLeft(self):
        del self.data[self.Left]
        self.Right -= 1
        
    def DeleteRight(self):
        self.Right -= 1
        del self.data[self.Right]
        
    def __str__(self):
        return self.data.__str__()
    

class DNode():
    def __init__(self, value, next, previous):
        self.Next = next
        self.Previous = previous
        self.value = value

In [36]:
d = Deque()

In [37]:
d.InsertLeft(1)
print d, d.Left, d.Right


[1] 0 1

In [38]:
d.InsertRight(5)
print d, d.Left, d.Right


[1, 5] 0 2

In [39]:
d.InsertRight(3)
print d, d.Left, d.Right


[1, 5, 3] 0 3

In [40]:
d.InsertLeft(7)
print d, d.Left, d.Right


[7, 1, 5, 3] 0 4

In [41]:
d.DeleteLeft()
print d, d.Left, d.Right


[1, 5, 3] 0 3

In [42]:
d.DeleteRight()
print d, d.Left, d.Right


[1, 5] 0 2

In [ ]: