logo

Og i Python

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:

Python
from collections import deque # Declaring deque  de = deque(['name''age''DOB']) print(de) 

Produksjon
deque(['name' 'age' 'DOB']) 
Derfor' title=

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