logo

E in Python

Deque (Doubly Ended Queue) in Python viene implementato utilizzando il modulo collezioni . Deque è preferibile rispetto a un elenco nei casi in cui sono necessarie operazioni di aggiunta e pop più rapide da entrambe le estremità del contenitore, poiché deque fornisce un O(1) complessità temporale per le operazioni di aggiunta e estrazione rispetto a un elenco che fornisce complessità temporale O(n).

Tipi di input deque limitati

    Deque con restrizioni di input: l'input è limitato a un'estremità mentre l'eliminazione è consentita a entrambe le estremità. Deque limitato in uscita: l'uscita è limitata a un'estremità ma l'inserimento è consentito a entrambe le estremità.

Esempio: codice Python da dimostrare

Python3








from> collections>import> deque> > # Declaring deque> queue>=> deque([>'name'>,>'age'>,>'DOB'>])> > print>(queue)>



>

>

Produzione

deque(['name', 'age', 'DOB'])>

Operazioni sulla deque

Esempio 1: accodamento di elementi in modo efficiente

    append(): - Questa funzione viene utilizzata per inserire il valore nel suo argomento all'estremità destra della deque. appendleft(): - Questa funzione viene utilizzata per inserire il valore nel suo argomento all'estremità sinistra della 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)>

>

>

Produzione

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])>

Fare riferimento all'estremità per l'analisi della complessità.

Esempio 2: estrarre gli oggetti in modo efficiente

    pop() :- Questa funzione viene utilizzata per eliminare un argomento dall'estremità destra della deque. popleft(): - Questa funzione viene utilizzata per eliminare un argomento dall'estremità sinistra della 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)>

>

metodi di arraylist

>

Produzione

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])>

Fare riferimento all'estremità per l'analisi della complessità.

Esempio 3: accesso agli elementi in una deque

    indice(ele, beg, end): - Questa funzione restituisce il primo indice del valore menzionato negli argomenti, iniziando la ricerca dall'inizio fino all'indice finale. insert(i, a): - Questa funzione inserisce il valore menzionato negli argomenti(a) nell'indice(i) specificato negli argomenti. rimuovi(): - Questa funzione rimuove la prima occorrenza del valore menzionato negli argomenti. count(): - Questa funzione conta il numero di occorrenze del valore menzionato negli argomenti.

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)>

>

>

Produzione

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])>

Fare riferimento all'estremità per l'analisi della complessità.

Esempio 4: dimensione di una deque

    len(dequeue) :- Restituisce la dimensione corrente della rimozione dalla coda.

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>

>

>

Produzione

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>

Fare riferimento all'estremità per l'analisi della complessità.

Esempio 5: fronte e retro di una deque

    Deque[0]: - Possiamo accedere all'elemento anteriore della deque utilizzando l'indicizzazione con de[0]. Deque[-1]: - Possiamo accedere all'elemento back della deque utilizzando l'indicizzazione con de[-1].

Python3




# 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>

>

>

Produzione

Current Deque: deque([1, 2, 3, 4, 5, 6]) Front element of the deque: 1 Back element of the deque: 6>

Fare riferimento all'estremità per l'analisi della complessità.

Esempio 6: diverse operazioni su deque

    extend(iterable): - Questa funzione viene utilizzata per aggiungere più valori all'estremità destra della deque. L'argomento passato è iterabile. extendleft(iterable): - Questa funzione viene utilizzata per aggiungere più valori all'estremità sinistra della deque. L'argomento passato è iterabile. L'ordine viene invertito come risultato dell'aggiunta a sinistra. reverse(): - Questa funzione viene utilizzata per invertire l'ordine degli elementi deque. ruotare(): - Questa funzione ruota la deque del numero specificato negli argomenti. Se il numero specificato è negativo, la rotazione avviene verso sinistra. Altrimenti la rotazione è a destra.

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)>

>

>

Produzione

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])>

Fare riferimento all'estremità per l'analisi della complessità.

Analisi della complessità:

Metodi

Complessità temporale

Spazio ausiliario

aggiungere()

O(1)

O(1)

appendleft()

O(1)

O(1)

pop()

O(1)

O(1)

popleft()

O(1)

O(1)

indice(ele, inizio, fine)

SU)

O(1)

inserire(i, a)

SU)

O(1)

rimuovere()

SU)

O(1)

contare()

SU)

O(1)

semplicemente (rimuovi la coda)

O(1)

O(1)

Deque[0]

O(1)

O(1)

Deque[-1]

O(1)

O(1)

estendere (iterabile)

FRECCIA)

O(1)

extendleft(iterabile)

FRECCIA)

O(1)

inversione()

SU)

O(1)

ruotare()

FRECCIA)

O(1)