Files
org-roamings/20211230192608-list_vs_deque.org
2022-01-04 14:37:13 +01:00

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) :

Deque/8oq2m41oivizbdltb6p9_2021-12-30_19-50-53.png

Figure illustrant l'intérêt d'une chaine doublement chainée afin de réaliser une queue:

Deque/ygqm1fk0kmm6waj0wvgi_2021-12-30_19-54-42.png

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.