Maison  >  Article  >  développement back-end  >  Parlons de la file d'attente bidirectionnelle de Python

Parlons de la file d'attente bidirectionnelle de Python

coldplay.xixi
coldplay.xixiavant
2020-10-27 17:09:092324parcourir

Tutoriel PythonAujourd'hui, nous introduisons les files d'attente bidirectionnelles.

Parlons de la file d'attente bidirectionnelle de Python

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)复制代码
  1. maxlen est un paramètre facultatif de deque, qui est utilisé pour spécifier la capacité de la file d'attente, c'est-à-dire le nombre d'éléments qui peuvent être placés. La méthode
  2. rotate() peut faire pivoter la file d'attente. Il a un paramètre d'entrée n Lorsque n > 0, les n éléments commençant par le côté le plus à droite de la file d'attente seront déplacés vers la gauche. Lorsque n
  3. extend() peut ajouter de nouveaux éléments à la file d'attente. Elle accepte une liste comme paramètre d'entrée et ajoutera tous les éléments de la liste à la file d'attente. Les nouveaux éléments sont placés sur le côté droit de la file d'attente.
  4. Si la file d'attente s'avère pleine lors de l'ajout d'un nouvel élément, l'élément en tête de file sera automatiquement supprimé. La méthode
  5. extendleft(iter) consiste à placer l'élément nouvellement ajouté sur le côté gauche de la file d'attente. Les autres propriétés sont les mêmes que la méthode extend().

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer