logo

Ja Pythonissa

Deque tarkoittaa kaksipäistä jonoa. Se on erityinen tietorakenne, jonka avulla voit lisätä ja poistaa elementtejä molemmista päistä tehokkaasti.

Toisin kuin tavalliset jonot (jotka yleensä seuraavat First In First Out -toimintoa) deque tukee sekä FIFO- että LIFO-toimintoja. Tämä tekee siitä erittäin joustavan ja hyödyllisen reaalimaailman sovelluksissa, kuten tehtävien ajoituksen liukuvan ikkunan ongelmissa ja reaaliaikaisessa tietojenkäsittelyssä.



Esimerkki:

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

Lähtö
deque(['name' 'age' 'DOB']) 
Siksi' title=

Miksi tarvitsemme deque

  • Se tukee O(1)-aikaa elementtien lisäämiseen/poistamiseen molemmista päistä.
  • Se on tehokkaampi kuin käyttöliittymätoimintojen luettelot.
  • Se voi toimia sekä jonona (FIFO) että pinona (LIFO).
  • Ihanteellinen liukuikkunoiden ongelmien ajoittamiseen ja reaaliaikaiseen tietojenkäsittelyyn.
  • Se tarjoaa tehokkaita sisäänrakennettuja menetelmiä, kuten appendleft() popleft() ja kiertää().

Rajoitettujen deque-tulojen tyypit

  • Input Restricted Deque :  Syöte on rajoitettu toisessa päässä, kun taas poistaminen on sallittu molemmissa päissä.
  • Lähtörajoitettu deque : lähtö on rajoitettu toisessa päässä, mutta lisäys on sallittu molemmissa päissä.

Leikkaukset dequessa 

Tässä on taulukko, jossa luetellaan Pythonin dequen sisäänrakennetut toiminnot kuvauksineen ja niitä vastaavat aikamonimutkaisuudet:

kuinka käyttää mysql-työpöytää
Toiminta Kuvaus Aika monimutkaisuus
liitä (x) Lisääxdequen oikeaan päähän.O(1)
liite vasen (x) Lisääxdequen vasempaan päähän.O(1)
pop() Poistaa ja palauttaa elementin dequen oikeasta päästä.O(1)
popleft() Poistaa ja palauttaa elementin dequen vasemmasta päästä.O(1)
laajentaa (iteroitavissa) Lisää kaikki elementit kohteestaiterabledequen oikeaan päähän.O(k)
pidennetty vasen (iteroitava) Lisää kaikki elementit kohteestaiterabledequen vasempaan päähän (käänteinen järjestys).O(k)
poista (arvo) Poistaa ensimmäisen esiintymänvaluedequesta. NostaaValueErrorjos ei löydy.O(n)
pyöritä (n) Pyörittää dequenaskeleet oikealle. Josnon negatiivinen pyörii vasemmalle.O(k)
selvä () Poistaa kaikki elementit dequesta.O(n)
määrä (arvo) Laskee tapahtumien määränvaluedequessa.O(n)
indeksi(arvo) Palauttaa ensimmäisen esiintymän indeksinvaluedequessa. NostaaValueErrorjos ei löydy.O(n)
käänteinen () Kääntää dequen elementit paikoilleen.O(n)

Jonon kohteiden lisääminen ja poistaminen

  • liitä (x): Lisää x:n dequen oikeaan päähän.
  • liite vasen (x): Lisää x:n dequen vasempaan päähän.
  • laajenna (iteroitavissa): Lisää kaikki elementit iteroitavasta oikeaan loppuun.
  • jatke vasemmalle (iteroitava): Lisää kaikki elementit iteroitavasta vasempaan loppuun (käänteisessä järjestyksessä).
  • poista(arvo): Poistaa määritetyn arvon ensimmäisen esiintymän deque-tiedostosta. Jos arvoa ei löydy, se aiheuttaa ValueError-ilmoituksen.
  • pop(): Poistaa ja palauttaa elementin oikeasta päästä.
  • popleft(): Poistaa ja palauttaa elementin vasemmasta päästä.
  • selvä(): Poistaa kaikki elementit dequesta.
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) 

Lähtö:

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

Kohteen käyttö ja dequen pituus

  • Indeksointi: Käytä elementtejä sijainnin mukaan käyttämällä positiivisia tai negatiivisia indeksejä.
  • vain(): Palauttaa dequen elementtien määrän.
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)) 

Lähtö
1 4 7 

Laskun kierto ja dequen kääntäminen

  • count(arvo): Tämä menetelmä laskee tietyn elementin esiintymisten määrän dequessa.
  • pyöritä(n): Tämä menetelmä kiertää laskua n askelta. Positiivinen n pyörii oikealle ja negatiivinen n vasemmalle.
  • käänteinen(): Tämä menetelmä kääntää deque-elementtien järjestyksen.
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) 

Lähtö
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])