Maison > Article > développement back-end > Parlons de la file d'attente bidirectionnelle de Python
Tutoriel PythonAujourd'hui, nous introduisons les files d'attente bidirectionnelles.
Bien que vous puissiez utiliser les méthodes .append et .pop des listes Python pour simuler une pile ou une file d'attente, en supprimant le premier élément de la liste ou le premier Ajouter un nouvel élément avant chaque élément prend beaucoup de temps. Parce que tous les éléments de la liste doivent être déplacés vers l'arrière.
La file d'attente bidirectionnelle de Python est implémentée à l'aide de la classe collections.deque. Il s'agit d'une classe thread-safe qui peut rapidement ajouter ou supprimer des éléments aux deux extrémités.
deque /dɛk/
Vous pouvez également utiliser la classe collections.deque pour implémenter la mise en cache. Tout d’abord, spécifiez la taille de la file d’attente du cache, puis supprimez les éléments expirés de la tête de la file d’attente et ajoutez de nouveaux éléments à la queue.
Luciano Ramalho a donné un exemple pour illustrer l'utilisation de base des files d'attente bidirectionnelles.
from collections import deque dq = deque(range(10), maxlen=10) logging.info('dq -> %s', dq) dq.rotate(3) logging.info('dq -> %s', dq) dq.rotate(-4) logging.info('dq -> %s', dq) dq.extend([11, 22, 33]) logging.info('dq -> %s', dq) dq.extendleft([10, 20, 30, 40]) logging.info('dq -> %s', dq)复制代码
Résultats d'exploitation :
INFO - dq -> deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10) INFO - dq -> deque([7, 8, 9, 0, 1, 2, 3, 4, 5, 6], maxlen=10) INFO - dq -> deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], maxlen=10) INFO - dq -> deque([4, 5, 6, 7, 8, 9, 0, 11, 22, 33], maxlen=10) INFO - dq -> deque([40, 30, 20, 10, 4, 5, 6, 7, 8, 9], maxlen=10)复制代码
La file d'attente bidirectionnelle n'est pas parfaite. Si vous supprimez un élément du milieu de la file d'attente, il sera plus lent car il n'est optimisé que pour les opérations de tête et de queue de la file d'attente.
Recommandations d'apprentissage gratuites associées : Tutoriel Python(vidéo)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!