Le module collections fournit deux nouveaux conteneurs :
Un deque (double-ended queue) est une sorte de liste, à laquelle on peut accéder par ses deux bouts. Cela permet de réaliser aisément, par exemple, une structure de pile, ou de file.
On manipule les deque comme les listes, comme l'illustre les exemples suivants :
>>> import collections >>> d = collections.deque('abcde') >>> d deque(['a', 'b', 'c', 'd', 'e']) >>> len(d) 5 >>> d[0] 'a' >>> d[-1] 'e' >>> d.remove('c') >>> d deque(['a', 'b', 'd', 'e']) >>> d = collections.deque(range(5)) >>> d deque([0, 1, 2, 3, 4])
On peut ajouter des éléments à un deque...
>>> d
>>> d.append(5) >>> d.appendleft(-1) >>> d deque([-1, 0, 1, 2, 3, 4, 5])
>>> d
>>> d.extend([6,7,8]) >>> d deque([-1, 0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> d deque([-1, 0, 1, 2, 3, 4, 5, 6, 7, 8]) >>> d.extendleft([-4, -3, -2]) >>> d deque([-2, -3, -4, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8])
Les éléments aux deux bouts d'un deque peuvent être "consommés" avec les méthodes pop() et popleft() :
>>> d = collections.deque('abc') >>> d deque(['a', 'b', 'c']) >>> d.pop() 'c' >>> d deque(['a', 'b']) >>> d.popleft() 'a' >>> d deque(['b'])
On peut encore réaliser une permutation circulaire des éléments d'un deque, vers la gauche ou vers la droite.
>>> d = collections.deque(range(8)) >>> d deque([0, 1, 2, 3, 4, 5, 6, 7]) >>> d.rotate(3) >>> d deque([5, 6, 7, 0, 1, 2, 3, 4]) >>> d.rotate(-3) >>> d deque([0, 1, 2, 3, 4, 5, 6, 7])