Deque (Double Ended Queue) en Python est implémenté à l'aide du module collections . Deque est préféré à une liste dans les cas où nous avons besoin d'opérations d'ajout et de pop plus rapides depuis les deux extrémités du conteneur, car deque fournit un O(1) complexité temporelle pour les opérations d'ajout et de pop par rapport à une liste qui fournit une complexité temporelle O(n).

Types d’entrée Deque restreinte
- Entrée restreinte Deque : l'entrée est limitée à une extrémité tandis que la suppression est autorisée aux deux extrémités. Output Restricted Deque : la sortie est limitée à une extrémité mais l'insertion est autorisée aux deux extrémités.
Exemple : code Python à démontrer
Python3
from> collections> import> deque> > # Declaring deque> queue> => deque([> 'name'> ,> 'age'> ,> 'DOB'> ])> > print> (queue)> |
>
>Sortir
deque(['name', 'age', 'DOB'])>
Opérations sur deque
Exemple 1 : ajouter des éléments de manière efficace
- append() :- Cette fonction est utilisée pour insérer la valeur dans son argument à l'extrémité droite du deque. appendleft() :- Cette fonction est utilisée pour insérer la valeur dans son argument à l'extrémité gauche du deque.
Python3
# importing 'collections' for deque operations> import> collections> # initializing deque> de> => collections.deque([> 1> ,> 2> ,> 3> ])> print> (> 'deque: '> , de)> # using append() to insert element at right end> # inserts 4 at the end of deque> de.append(> 4> )> # printing modified deque> print> (> '
The deque after appending at right is : '> )> print> (de)> # using appendleft() to insert element at left end> # inserts 6 at the beginning of deque> de.appendleft(> 6> )> # printing modified deque> print> (> '
The deque after appending at left is : '> )> print> (de)> |
>
âge de l'acteur Ranbir Kapoor
>Sortir
deque: deque([1, 2, 3]) The deque after appending at right is : deque([1, 2, 3, 4]) The deque after appending at left is : deque([6, 1, 2, 3, 4])>
Reportez-vous à la fin pour l'analyse de la complexité.
Exemple 2 : Explorer efficacement des éléments
- pop() :- Cette fonction est utilisée pour supprimer un argument de l'extrémité droite du deque. popleft() :- Cette fonction est utilisée pour supprimer un argument de l'extrémité gauche du deque.
Python3
# importing 'collections' for deque operations> import> collections> # initializing deque> de> => collections.deque([> 6> ,> 1> ,> 2> ,> 3> ,> 4> ])> print> (> 'deque: '> , de)> # using pop() to delete element from right end> # deletes 4 from the right end of deque> de.pop()> # printing modified deque> print> (> '
The deque after deleting from right is : '> )> print> (de)> # using popleft() to delete element from left end> # deletes 6 from the left end of deque> de.popleft()> # printing modified deque> print> (> '
The deque after deleting from left is : '> )> print> (de)> |
>
>Sortir
deque: deque([6, 1, 2, 3, 4]) The deque after deleting from right is : deque([6, 1, 2, 3]) The deque after deleting from left is : deque([1, 2, 3])>
Reportez-vous à la fin pour l'analyse de la complexité.
Exemple 3 : Accéder aux éléments d'un deque
- index(ele, beg, end) : - Cette fonction renvoie le premier index de la valeur mentionnée dans les arguments, en commençant la recherche du début à la fin de l'index. insert(i, a) :- Cette fonction insère la valeur mentionnée dans arguments(a) à l'index(i) spécifié dans les arguments. remove() :- Cette fonction supprime la première occurrence de la valeur mentionnée dans les arguments. count() :- Cette fonction compte le nombre d'occurrences de valeur mentionnées dans les arguments.
Python3
# Python code to demonstrate working of> # insert(), index(), remove(), count()> # importing 'collections' for deque operations> import> collections> # initializing deque> de> => collections.deque([> 1> ,> 2> ,> 3> ,> 3> ,> 4> ,> 2> ,> 4> ])> # using index() to print the first occurrence of 4> print> (> 'The number 4 first occurs at a position : '> )> print> (de.index(> 4> ,> 2> ,> 5> ))> # using insert() to insert the value 3 at 5th position> de.insert(> 4> ,> 3> )> # printing modified deque> print> (> 'The deque after inserting 3 at 5th position is : '> )> print> (de)> # using count() to count the occurrences of 3> print> (> 'The count of 3 in deque is : '> )> print> (de.count(> 3> ))> # using remove() to remove the first occurrence of 3> de.remove(> 3> )> # printing modified deque> print> (> 'The deque after deleting first occurrence of 3 is : '> )> print> (de)> |
>
>Sortir
The number 4 first occurs at a position : 4 The deque after inserting 3 at 5th position is : deque([1, 2, 3, 3, 3, 4, 2, 4]) The count of 3 in deque is : 3 The deque after deleting first occurrence of 3 is : deque([1, 2, 3, 3, 4, 2, 4])>
Reportez-vous à la fin pour l'analyse de la complexité.
Exemple 4 : Taille d'un deque
- len(dequeue) :- Renvoie la taille actuelle de la file d'attente.
Python3
# Python Program to demonstrate> # how to find size of a Dequeue> from> collections> import> deque> # initializing deque> de> => deque([> 1> ,> 2> ,> 3> ,> 4> ,> 5> ,> 6> ])> print> (> 'Current Deque: '> , de)> # printing current size of deque> print> (f> 'Size of Deque: {len(de)}'> )> # using pop() to delete element from right end> # deletes 6 from the right end of deque> de.pop()> # printing modified deque> print> (> '
The deque after deleting from right is: '> , end> => '')> print> (de)> # printing current size of deque> print> (f> 'Size of Deque: {len(de)}'> )> # This code is contributed by Susobhan Akhuli> |
>
>Sortir
Current Deque: deque([1, 2, 3, 4, 5, 6]) Size of Deque: 6 The deque after deleting from right is: deque([1, 2, 3, 4, 5]) Size of Deque: 5>
Reportez-vous à la fin pour l'analyse de la complexité.
Exemple 5 : recto et verso d'un deque
- Deque[0] : - Nous pouvons accéder à l'élément avant du deque en utilisant l'indexation avec de[0]. Deque[-1] :- Nous pouvons accéder à l'élément arrière du deque en utilisant l'indexation avec de[-1].
Python3
bordure en utilisant CSS
# Python Program to demonstrate> # accessing the front and back of a Deque> from> collections> import> deque> # initializing deque> de> => deque([> 1> ,> 2> ,> 3> ,> 4> ,> 5> ,> 6> ])> print> (> 'Current Deque: '> , de)> # Accessing the front element of the deque> print> (> 'Front element of the deque:'> , de[> 0> ])> # Accessing the back element of the deque> print> (> 'Back element of the deque:'> , de[> -> 1> ])> # This code is contributed by Susobhan Akhuli> |
>
>Sortir
Current Deque: deque([1, 2, 3, 4, 5, 6]) Front element of the deque: 1 Back element of the deque: 6>
Reportez-vous à la fin pour l'analyse de la complexité.
Exemple 6 : Différentes opérations sur deque
- extend(iterable) : - Cette fonction est utilisée pour ajouter plusieurs valeurs à l'extrémité droite du deque. L'argument passé est itérable. extendleft(iterable) : - Cette fonction est utilisée pour ajouter plusieurs valeurs à l'extrémité gauche du deque. L'argument passé est itérable. L'ordre est inversé en raison des ajouts à gauche. reverse() :- Cette fonction est utilisée pour inverser l'ordre des éléments deque. rotate() :- Cette fonction fait pivoter le deque du nombre spécifié dans les arguments. Si le nombre spécifié est négatif, la rotation se produit vers la gauche. Sinon, la rotation se fait vers la droite.
Python3
# Python code to demonstrate working of> # extend(), extendleft(), rotate(), reverse()> # importing 'collections' for deque operations> import> collections> # initializing deque> de> => collections.deque([> 1> ,> 2> ,> 3> ,])> # using extend() to add numbers to right end> # adds 4,5,6 to right end> de.extend([> 4> ,> 5> ,> 6> ])> # printing modified deque> print> (> 'The deque after extending deque at end is : '> )> print> (de)> # using extendleft() to add numbers to left end> # adds 7,8,9 to left end> de.extendleft([> 7> ,> 8> ,> 9> ])> # printing modified deque> print> (> 'The deque after extending deque at beginning is : '> )> print> (de)> # using rotate() to rotate the deque> # rotates by 3 to left> de.rotate(> -> 3> )> # printing modified deque> print> (> 'The deque after rotating deque is : '> )> print> (de)> # using reverse() to reverse the deque> de.reverse()> # printing modified deque> print> (> 'The deque after reversing deque is : '> )> print> (de)> |
>
>Sortir
The deque after extending deque at end is : deque([1, 2, 3, 4, 5, 6]) The deque after extending deque at beginning is : deque([9, 8, 7, 1, 2, 3, 4, 5, 6]) The deque after rotating deque is : deque([1, 2, 3, 4, 5, 6, 9, 8, 7]) The deque after reversing deque is : deque([7, 8, 9, 6, 5, 4, 3, 2, 1])>
Reportez-vous à la fin pour l'analyse de la complexité.
Analyse de complexité :
Méthodes | Complexité temporelle | Espace auxiliaire |
---|---|---|
ajouter() | O(1) | O(1) |
appendleft() commande d'exécution Linux | O(1) | O(1) |
populaire() | O(1) | O(1) |
popgauche() | O(1) | O(1) |
index(ele, début, fin) | SUR) | O(1) |
insérer (i, a) | SUR) | O(1) |
retirer() | SUR) | O(1) |
compter() | SUR) histoire en java | O(1) |
juste (retirer la file d'attente) | O(1) | O(1) |
Deque[0] | O(1) | O(1) |
Deque[-1] | O(1) | O(1) |
étendre (itérable) | FLÈCHE) | O(1) |
étendre à gauche (itérable) | FLÈCHE) | O(1) |
inverse() | SUR) | O(1) |
tourner() | FLÈCHE) | O(1) |