2.5 KiB
2.5 KiB
List vs deque
Deque
Classe du module collections écrite afin de réaliser une queue plus efficace que la list.
Caractéristiques principales :
- Ecrite en C (.cf Github),
- Liste doublement chainée et avec une double queue (contrairement à list ayant une simple queue, à droite),
- Peut contenir des objets de types différents,
- Les méthodes pop, append, appendleft et popleft sont thread-safe,
- Object mutable,
- Supporte les membership operations (opérateur in),
- Supporte l'indexation (par exemple, d[2]),
- Supporte les fonctions fonctionnant avec les sequences et iterables (par exemple, len(), sorted()),
- Supporte l'itération et l'itération inversée,
- Supporte le picking (pickle),
- Ne supporte pas le slicing (par exemple, d[0:2]) et le rangement (sorting) in-place (par exemple: [3, 1, 2].sort()),
Illustration de la liste doublement chainées (deque) :
Figure illustrant l'intérêt d'une chaine doublement chainée afin de réaliser une queue:
Deque vs list
Based on Big-O notation:
Deque | List | |
Access by an index | O(n) | O(1) |
Append/pop at the beginning | O(1) | O(n) |
Append/pop at the end | O(1) | O(1) + reallocation time |
Insert in the middle | O(n) | O(n) |
La deque est plus performante que la list, hormis pour l'accès par index.