En deque står for Double-Ended Queue. Det er en spesiell type datastruktur som lar deg legge til og fjerne elementer fra begge ender effektivt.
I motsetning til vanlige køer (som vanligvis følger First In First Out) støtter en deque både FIFO- og LIFO-operasjoner. Dette gjør det veldig fleksibelt og nyttig i virkelige applikasjoner som oppgaveplanlegging problemer med skyvevinduer og sanntids databehandling.
Eksempel:
Pythonfrom collections import deque # Declaring deque de = deque(['name''age''DOB']) print(de)
Produksjon
deque(['name' 'age' 'DOB'])

Hvorfor trenger vi deque
- Den støtter O(1)-tid for å legge til/fjerne elementer fra begge ender.
- Det er mer effektivt enn lister for front-end-operasjoner.
- Den kan fungere både som en kø (FIFO) og en stabel (LIFO).
- Ideell for å planlegge problemer med skyvevinduer og databehandling i sanntid.
- Den tilbyr kraftige innebygde metoder som appendleft() popleft() og rotere().
Typer begrenset Deque Input
- Inndatabegrenset Deque : Inndata er begrenset i den ene enden, mens sletting er tillatt i begge ender.
- Utgangsbegrenset Deque : utgangen er begrenset i den ene enden, men innsetting er tillatt i begge ender.
Operasjoner på dekk
Her er en tabell som viser innebygde operasjoner for en deque i Python med beskrivelser og deres tilsvarende tidskompleksitet:
min maks
| Operasjon | Beskrivelse | Tidskompleksitet |
|---|---|---|
| legge til (x) | Legger tilxtil høyre ende av bordet. | O(1) |
| appendleft (x) | Legger tilxtil venstre ende av bordet. | O(1) |
| pop() | Fjerner og returnerer et element fra høyre ende av deque. | O(1) |
| popleft() | Fjerner og returnerer et element fra venstre ende av dequen. | O(1) |
| forlenge (gjentagbar) | Legger til alle elementer fraiterabletil høyre ende av bordet. | Greit) |
| extendleft(iterbar) | Legger til alle elementer fraiterabletil venstre ende av deque (omvendt rekkefølge). | Greit) |
| fjerne (verdi) | Fjerner den første forekomsten avvaluefra dek. HeverValueErrorhvis ikke funnet. | På) |
| rotere (n) | Roterer bordetntrinn til høyre. Hvisner negativ roterer til venstre. | Greit) |
| klar() | Fjerner alle elementer fra bordet. | På) |
| telle (verdi) | Teller antall forekomster avvaluei dekket. | På) |
| indeks(verdi) | Returnerer indeksen for den første forekomsten avvaluei dekket. HeverValueErrorhvis ikke funnet. | På) |
| omvendt() | Reverserer elementene i dekket på plass. | På) |
Legge til og slette elementer fra kø
- legg til (x): Legger til x til høyre ende av deque.
- appendleft(x): Legger til x til venstre ende av deque.
- forlenge (iterbar): Legger til alle elementer fra den iterable til høyre ende.
- extendleft(iterbar): Legger til alle elementene fra den iterable til venstre ende (i omvendt rekkefølge).
- fjern(verdi): Fjerner den første forekomsten av den angitte verdien fra dequen. Hvis verdien ikke blir funnet, oppstår en ValueError.
- pop(): Fjerner og returnerer et element fra høyre ende.
- popleft(): Fjerner og returnerer et element fra venstre ende.
- klar(): Fjerner alle elementer fra bordet.
from collections import deque dq = deque([10 20 30]) # Add elements to the right dq.append(40) # Add elements to the left dq.appendleft(5) # extend(iterable) dq.extend([50 60 70]) print('After extend([50 60 70]):' dq) # extendleft(iterable) dq.extendleft([0 5]) print('After extendleft([0 5]):' dq) # remove method dq.remove(20) print('After remove(20):' dq) # Remove elements from the right dq.pop() # Remove elements from the left dq.popleft() print('After pop and popleft:' dq) # clear() - Removes all elements from the deque dq.clear() # deque: [] print('After clear():' dq)
Produksjon:
After extend([50 60 70]): deque([5 10 20 30 40 50 60 70])
After extendleft([0 5]): deque([5 0 5 10 20 30 40 50 60 70])
After remove(20): deque([5 0 5 10 30 40 50 60 70])
After pop and popleft: deque([0 5 10 30 40 50 60])
After clear(): deque([])
Tilgang til vare og lengde på deque
- Indeksering: Få tilgang til elementer etter posisjon ved å bruke positive eller negative indekser.
- bare(): Returnerer antall elementer i tabellen.
import collections dq = collections.deque([1 2 3 3 4 2 4]) # Accessing elements by index print(dq[0]) print(dq[-1]) # Finding the length of the deque print(len(dq))
Produksjon
1 4 7
Telle rotasjon og reversering av en deque
- antall (verdi): Denne metoden teller antall forekomster av et spesifikt element i dequen.
- rotere(n): Denne metoden roterer deque med n trinn. Positiv n roterer til høyre og negativ n roterer til venstre.
- omvendt(): Denne metoden reverserer rekkefølgen på elementene i tabellen.
from collections import deque # Create a deque dq = deque([10 20 30 40 50 20 30 20]) # 1. Counting occurrences of a value print(dq.count(20)) # Occurrences of 20 print(dq.count(30)) # Occurrences of 30 # 2. Rotating the deque dq.rotate(2) # Rotate the deque 2 steps to the right print(dq) dq.rotate(-3) # Rotate the deque 3 steps to the left print(dq) # 3. Reversing the deque dq.reverse() # Reverse the deque print(dq)
Produksjon
3 2 deque([30 20 10 20 30 40 50 20]) deque([20 30 40 50 20 30 20 10]) deque([10 20 30 20 50 40 30 20])