Og i Python

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

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:

Operation Beskrivelse Tidskompleksitet
tilføje(x) Tilføjer x til højre ende af deque. O(1)
appendleft(x) Tilføjer x til 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 fra iterable til højre ende af deque. Okay)
extendleft(iterbar) Tilføjer alle elementer fra iterable til venstre ende af deque (omvendt rækkefølge). Okay)
fjerne (værdi) Fjerner den første forekomst af value fra deque. Hæver ValueError hvis ikke fundet. På)
rotere (n) Roterer bordet n trin til højre. Hvis n er negativ roterer til venstre. Okay)
klar() Fjerner alle elementer fra deque. På)
antal (værdi) Tæller antallet af forekomster af value i deque. På)
indeks (værdi) Returnerer indekset for den første forekomst af value i deque. Hæver ValueError hvis 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])