Og i Python

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

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:

Operasjon Beskrivelse Tidskompleksitet
legge til (x) Legger til x til høyre ende av bordet. O(1)
appendleft (x) Legger til x til 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 fra iterable til høyre ende av bordet. Greit)
extendleft(iterbar) Legger til alle elementer fra iterable til venstre ende av deque (omvendt rekkefølge). Greit)
fjerne (verdi) Fjerner den første forekomsten av value fra dek. Hever ValueError hvis ikke funnet. På)
rotere (n) Roterer bordet n trinn til høyre. Hvis n er negativ roterer til venstre. Greit)
klar() Fjerner alle elementer fra bordet. På)
telle (verdi) Teller antall forekomster av value i dekket. På)
indeks(verdi) Returnerer indeksen for den første forekomsten av value i dekket. Hever ValueError hvis 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])