English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Deque è una generalizzazione delle strutture di stack e coda, inizializzata da sinistra a destra. Utilizza oggetti list per creare una coda a due estremità, offrendo una complessità temporale O(1) per l'espulsione e l'aggiunta.
Deque è una classe della libreria standard, situatacollectionsmodulo.
Per prima cosa, dobbiamo importare il modulo standard delle collection.
import collections
In questa sezione, vedremo alcune funzionalità della classe Deque
Ci sono due tipi diversi di aggiunta. Ilappend()
Il metodo serve per aggiungere un elemento alla destra della coda, ilappendleft()
Il metodo serve per aggiungere un elemento alla sinistra della coda.
import collections as col #Inserisci alcuni elementi nella coda all'inizio my_deque = col.deque('124dfre') print('Dequeue: ' + str(my_deque)) #inserisci x a destra e B a sinistra my_deque.append('x') my_deque.appendleft('B') print('Coda a due estremità dopo l'aggiunta: ' + str(my_deque))
Risultato di output
Coda a due estremità: deque(['1', '2', '4', 'd', 'f', 'r', 'e']) Coda a due estremità dopo l'aggiunta: deque(['B', '1', '2', '4', 'd', 'f', 'r', 'e', 'x'])
Come l'aggiunta, ci sono due tipi diversi di funzioni di rimozione. Ilpop()
Il metodo viene utilizzato per rimuovere e restituire l'elemento più a destra dalla coda, ilpopleft()
Il metodo viene utilizzato per rimuovere e restituire l'elemento più a sinistra dalla coda.
import collections as col #Inserisci alcuni elementi nella coda all'inizio my_deque = col.deque('124dfre') print('Dequeue: ' + str(my_deque)) #Elimina l'elemento da destra e sinistra item = my_deque.pop() print('Elemento rimosso: ' + str(item)) item = my_deque.popleft() print('Elemento rimosso: ' + str(item)) print('Coda a due estremità dopo le operazioni di rimozione: ' + str(my_deque))
Risultato di output
Coda a due estremità: deque(['1', '2', '4', 'd', 'f', 'r', 'e']) Elemento rimosso: e Elemento rimosso: 1 Coda a due estremità dopo le operazioni di rimozione: deque(['2', '4', 'd', 'f', 'r'])
Alcune funzioni specifiche della coda a due estremità vengono utilizzate per ottenere informazioni relative agli elementi. Ci sono alcune funzioni, comeindex()
,count()
Eccetera. Il metodo index viene utilizzato per ottenere l'indice della prima occorrenza dell'elemento. Se non viene passato alcun parametro all'elemento, esso seleziona l'intera lista, e dopo aver specificato una limitazione, verifica l'indice entro quella limitazione. D'altra parte, ilcount()
Il metodo calcola la frequenza degli elementi nella coda a due estremità.
import collections as col #Inserisci alcuni elementi nella coda all'inizio my_deque = col.deque('AABCDDEFD') print('Dequeue: ' + str(my_deque)) #Trova l'indice di D print('Indice di D: ' + str(my_deque.index('D'))) print('Indice di D nel range 5 a 8 è: ' + str(my_deque.index('D', 5, 8))) #Calcolare il numero di occorrenze print('Occorrenze di A: ' + str(my_deque.count('A'))) print('Occorrenze di D: ' + str(my_deque.count('D')))
Risultato di output
Dequeue: deque(['A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D']) Indice di D: 4 Indice di D nel range 5 a 8 è: 5 Occorrenze di A: 2 Occorrenze di D: 3
insert()
Eremove()
Il metodoAbbiamo visto i funzioni append e pop nella Deque, rispettivamente per l'inserimento e la rimozione di elementi. Ci sono anche due metodi relativi all'inserimento e alla rimozione. Ilinsert()
Il metodo viene utilizzato per inserire un numero. In questo caso, possiamo fornire l'indice di inserimento. Pertanto, possiamo inserire il progetto nella posizione specificata. E ilremove()
Il metodo viene utilizzato per eliminare la prima occorrenza di un elemento.
import collections as col #Inserisci alcuni elementi nella coda all'inizio my_deque = col.deque('AABCDDEFD') print('Dequeue: ' + str(my_deque)) #Inserisci la lettera G e H nelle posizioni 5, 7 rispettivamente my_deque.insert(5, 'G') my_deque.insert(7, 'H') print('Deque dopo l'inserimento: ' + str(my_deque)) #Elimina la prima occorrenza della lettera D my_deque.remove('D') print('Deque dopo la rimozione: ' + str(my_deque))
Risultato di output
Dequeue: deque(['A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D']) Deque dopo l'inserimento: deque(['A', 'A', 'B', 'C', 'D', 'G', 'D', 'H', 'E', 'F', 'D']) Deque dopo la rimozione: deque(['A', 'A', 'B', 'C', 'G', 'D', 'H', 'E', 'F', 'D'])
La funzione di estensione viene utilizzata per aggiungere più elementi a una Deque. Possiamo utilizzare liste, tuple e altri insiemi per fornire più valori. Ci sono due funzioni di estensione. Ilextend()
Il metodo viene utilizzato per aggiungere elementi alla destra, simile a una ripetizioneappend()
Il metodo. E ilextendleft()
Il metodo viene utilizzato per aggiungere elementi alla sinistra, simile a una ripetizioneappendleft()
Metodo.
import collections as col #Inserisci alcuni elementi nella coda all'inizio my_deque = col.deque('AABCDDEFD') print('Dequeue: ' + str(my_deque)) #Estendi aggiungendo 1, 3, 5, 7 alla destra e x, y, z alla sinistra my_deque.extend([1, 3, 5, 7]) my_deque.extendleft(['x', 'y', 'z']) print('Deque dopo l'estensione: ' + str(my_deque))
Risultato di output
Dequeue: deque(['A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D']) Deque dopo l'estensione: deque(['z', 'y', 'x', 'A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D', 1, 3, 5, 7])
Possiamo usare questoreverse()
Il metodo inverso cambia l'ordine della coda. C'è un altro metodorotate()
Utilizzando il metodo rotate, la coda a due estremità può essere ruotata con un numero specificato come parametro. Se il parametro è positivo, ruota a destra, se è negativo, ruota a sinistra.
import collections as col #Inserisci alcuni elementi nella coda all'inizio my_deque = col.deque('AABCDDEFD') print('Dequeue: ' + str(my_deque)) my_deque.reverse() print('Deque dopo il rovesciamento:' + str(my_deque)) #Rotta a destra, 3 elementi my_deque.rotate(3) print('Deque dopo la rotazione:' + str(my_deque))
Risultato di output
Dequeue: deque(['A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D']) Deque dopo il rovesciamento: deque(['D', 'F', 'E', 'D', 'D', 'C', 'B', 'A', 'A']) Deque dopo la rotazione: deque(['B', 'A', 'A', 'D', 'F', 'E', 'D', 'D', 'C'])