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

Parlons de la file d'attente bidirectionnelle de Python

Oct 27, 2020 pm 05:09 PM
python 双向队列

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)复制代码
Copier après la connexion

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)复制代码
Copier après la connexion
  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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quels sont les avantages et les inconvénients des modèles ? Quels sont les avantages et les inconvénients des modèles ? May 08, 2024 pm 03:51 PM

Quels sont les avantages et les inconvénients des modèles ?

Comment télécharger Deepseek Xiaomi Comment télécharger Deepseek Xiaomi Feb 19, 2025 pm 05:27 PM

Comment télécharger Deepseek Xiaomi

Google AI annonce Gemini 1.5 Pro et Gemma 2 pour les développeurs Google AI annonce Gemini 1.5 Pro et Gemma 2 pour les développeurs Jul 01, 2024 am 07:22 AM

Google AI annonce Gemini 1.5 Pro et Gemma 2 pour les développeurs

Pour seulement 250$, le directeur technique de Hugging Face vous apprend étape par étape comment peaufiner Llama 3 Pour seulement 250$, le directeur technique de Hugging Face vous apprend étape par étape comment peaufiner Llama 3 May 06, 2024 pm 03:52 PM

Pour seulement 250$, le directeur technique de Hugging Face vous apprend étape par étape comment peaufiner Llama 3

Partagez plusieurs frameworks de projets open source .NET liés à l'IA et au LLM Partagez plusieurs frameworks de projets open source .NET liés à l'IA et au LLM May 06, 2024 pm 04:43 PM

Partagez plusieurs frameworks de projets open source .NET liés à l'IA et au LLM

Un guide complet sur le débogage et l'analyse des fonctions Golang Un guide complet sur le débogage et l'analyse des fonctions Golang May 06, 2024 pm 02:00 PM

Un guide complet sur le débogage et l'analyse des fonctions Golang

Comment lui demandez-vous Deepseek Comment lui demandez-vous Deepseek Feb 19, 2025 pm 04:42 PM

Comment lui demandez-vous Deepseek

Comment enregistrer la fonction d'évaluation Comment enregistrer la fonction d'évaluation May 07, 2024 am 01:09 AM

Comment enregistrer la fonction d'évaluation

See all articles