Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Utilisation du Module Collections | Utilisation Efficace des Structures de Données
Techniques d'Optimisation en Python
course content

Contenu du cours

Techniques d'Optimisation en Python

Techniques d'Optimisation en Python

1. Comprendre et Mesurer la Performance
2. Utilisation Efficace des Structures de Données
3. Améliorer les Performances avec des Outils Intégrés

book
Utilisation du Module Collections

Bien que les types de données intégrés et les tableaux NumPy gèrent la plupart des tâches courantes, le module collections offre des structures de données spécialisées conçues pour des cas d'utilisation spécifiques. Parmi celles-ci, deque (file d'attente double) se distingue par ses avantages de performance significatifs dans certains scénarios.

Contrairement aux listes, qui nécessitent de déplacer des éléments lors de l'insertion ou de la suppression depuis le début, un deque permet des opérations efficaces aux deux extrémités. Par conséquent, si vous avez souvent besoin d'ajouter ou de supprimer des éléments à partir de l'une ou l'autre extrémité d'une collection, un deque est un meilleur choix.

Maintenant, comparons la performance de list et deque dans un scénario pratique :

123456789101112131415161718192021222324252627282930
import os os.system('wget https://content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator from collections import deque numbers_list = list(range(1, 10000001)) numbers_deque = deque(numbers_list) @timeit_decorator(number=1000) def list_append_left(): # Insert -1 at the beginning numbers_list.insert(0, -1) @timeit_decorator(number=1000) def deque_append_left(): numbers_deque.appendleft(-1) @timeit_decorator(number=1000) def list_pop_left(): # Remove the element at index 0 (first element) numbers_list.pop(0) @timeit_decorator(number=1000) def deque_pop_left(): numbers_deque.popleft() list_append_left() deque_append_left() list_pop_left() deque_pop_left()
copy

Dans cet exemple, nous avons créé une list et une deque, chacune contenant 1000000 de nombres de 1 à 1000000 inclus. Comme montré, insérer et supprimer des éléments au début est beaucoup plus rapide dans une deque que dans une list et reste efficace quelle que soit la taille.

Lorsqu'il s'agit d'insérer ou de supprimer des éléments au début, les deux list et deque peuvent gérer ces tâches efficacement. Par conséquent, utiliser une deque uniquement à cette fin n'offre souvent pas un avantage significatif.

1234567891011121314151617181920212223
import os os.system('wget https://content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator from collections import deque numbers_list = list(range(1, 10000001)) numbers_deque = deque(numbers_list) @timeit_decorator(number=1000) def append_right(data_structure): data_structure.append(-1) @timeit_decorator(number=1000) def pop_right(data_structure): data_structure.pop() print('List performance:') append_right(numbers_list) pop_right(numbers_list) print('Dequeue performance:') append_right(numbers_deque) pop_right(numbers_deque)
copy

Les résultats de performance sont en effet similaires pour les deux structures de données. Cependant, l'ajout à une list est légèrement plus lent que l'ajout à un deque car les listes, implémentées comme des tableaux dynamiques, doivent occasionnellement redimensionner en allouant un bloc de mémoire plus grand et en copiant les éléments. En revanche, la structure en blocs de deque évite le redimensionnement, rendant les ajouts constamment plus rapides. Cette différence, cependant, devient notable uniquement avec des listes relativement grandes.

Dans laquelle des situations suivantes un `deque` est-il un meilleur choix qu'une `list`?

Dans laquelle des situations suivantes un deque est-il un meilleur choix qu'une list?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 4
We're sorry to hear that something went wrong. What happened?
some-alt