logo

Og i Python

En deque står for Double-Ended Queue. Det er en speciel type datastruktur, der giver dig mulighed for at tilføje og fjerne elementer fra begge ender effektivt.

I modsætning til normale køer (som normalt følger First In First Out) understøtter en deque både FIFO- og LIFO-operationer. Dette gør det meget fleksibelt og nyttigt i applikationer fra den virkelige verden som opgaveplanlægningsproblemer med glidende vinduer og databehandling i realtid.

Eksempel:

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

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

Hvorfor har vi brug for deque

  • Det understøtter O(1) tid til at tilføje/fjerne elementer fra begge ender.
  • Det er mere effektivt end lister til front-end-operationer.
  • Den kan både fungere som en kø (FIFO) og en stak (LIFO).
  • Ideel til at planlægge problemer med glidende vinduer og databehandling i realtid.
  • Det tilbyder kraftfulde indbyggede metoder som f.eks appendleft() popleft() og rotere().

Typer af begrænset deque-input

  • Input Begrænset Deque :  Input er begrænset i den ene ende, mens sletning er tilladt i begge ender.
  • Output Begrænset Deque : output er begrænset i den ene ende, men indsættelse er tilladt i begge ender.

Operationer på bord 

Her er en tabel, der viser indbyggede operationer af en deque i Python med beskrivelser og deres tilsvarende tidskompleksitet:



min max
Operation Beskrivelse Tidskompleksitet
tilføje(x) Tilføjerxtil højre ende af deque.O(1)
appendleft(x) Tilføjerxtil venstre ende af deque.O(1)
pop() Fjerner og returnerer et element fra højre ende af deque.O(1)
popleft() Fjerner og returnerer et element fra venstre ende af deque.O(1)
forlænge (igengående) Tilføjer alle elementer fraiterabletil højre ende af deque.Okay)
extendleft(iterbar) Tilføjer alle elementer fraiterabletil venstre ende af deque (omvendt rækkefølge).Okay)
fjerne (værdi) Fjerner den første forekomst afvaluefra deque. HæverValueErrorhvis ikke fundet.På)
rotere (n) Roterer bordetntrin til højre. Hvisner negativ roterer til venstre.Okay)
klar() Fjerner alle elementer fra deque.På)
antal (værdi) Tæller antallet af forekomster afvaluei deque.På)
indeks (værdi) Returnerer indekset for den første forekomst afvaluei deque. HæverValueErrorhvis ikke fundet.På)
bagside() Vender elementerne i deque på plads.På)

Tilføjelse og sletning af dekø-elementer

  • tilføj (x): Tilføjer x til højre ende af deque.
  • appendleft(x): Tilføjer x til venstre ende af deque.
  • forlænge (iterbar): Tilføjer alle elementer fra den iterable til højre ende.
  • extendleft(iterbar): Tilføjer alle elementer fra den iterable til venstre ende (i omvendt rækkefølge).
  • fjern (værdi): Fjerner den første forekomst af den angivne værdi fra deque. Hvis værdien ikke findes, rejser det en ValueError.
  • pop(): Fjerner og returnerer et element fra højre ende.
  • popleft(): Fjerner og returnerer et element fra venstre ende.
  • klar(): Fjerner alle elementer fra deque.
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) 

Produktion:

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

Adgang til vare og længde af deque

  • Indeksering: Få adgang til elementer efter position ved hjælp af positive eller negative indekser.
  • kun(): Returnerer antallet af elementer i deque.
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)) 

Produktion
1 4 7 

Tæl rotation og tilbageførsel af en deque

  • antal (værdi): Denne metode tæller antallet af forekomster af et specifikt element i deque.
  • rotere(n): Denne metode roterer bordet med n trin. Positiv n roterer til højre og negativ n roterer til venstre.
  • bagside(): Denne metode vender om rækkefølgen af ​​elementer i deque.
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) 

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