És Pythonban

És Pythonban

A deque a Double-Ended Queue rövidítése. Ez egy speciális típusú adatstruktúra, amely lehetővé teszi az elemek hatékony hozzáadását és eltávolítását mindkét végéről.

A normál várólistáktól eltérően (amelyek általában a First In First Out parancsot követik) a deque támogatja a FIFO és a LIFO műveleteket is. Ez nagyon rugalmassá és hasznossá teszi a valós alkalmazásokban, mint például a feladatütemezési csúszóablak problémák és a valós idejű adatfeldolgozás.

Példa:

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

Kimenet
deque(['name' 'age' 'DOB'])  
Ezért

Miért van szükségünk dekára?

  • Támogatja az O(1) időt az elemek hozzáadásához/eltávolításához mindkét végéről.
  • Hatékonyabb, mint a listák a front-end műveletekhez.
  • Működhet sorként (FIFO) és veremként (LIFO) is.
  • Ideális csúszóablak problémák ütemezéséhez és valós idejű adatfeldolgozáshoz.
  • Erőteljes beépített módszereket kínál, mint pl appendleft() popleft() és forog().

A korlátozott deque bemenet típusai

  • Input Restricted Deque :  A bevitel az egyik végén korlátozott, míg a törlés mindkét végén megengedett.
  • Kimenet Korlátozott Deque : a kimenet az egyik végén korlátozott, de a beillesztés mindkét végén megengedett.

Műveletek a deque-n 

Íme egy táblázat, amely felsorolja a Python deque beépített műveleteit leírásokkal és a hozzájuk tartozó időbeli összetettségekkel együtt:

Művelet Leírás Idő összetettsége
hozzáfűzés(x) Hozzáad x a deque jobb végére. O(1)
bal oldali függelék (x) Hozzáad x a deque bal végére. O(1)
pop() Eltávolít és visszaad egy elemet a deque jobb végéről. O(1)
popleft() Eltávolít és visszaad egy elemet a deque bal végéből. O(1)
kiterjeszthető (iterálható) Hozzáadja az összes elemet innen iterable a deque jobb végére. Rendben van)
kinyújtott bal (iterálható) Hozzáadja az összes elemet innen iterable a deque bal végére (fordított sorrend). Rendben van)
eltávolítás(érték) Eltávolítja az első előfordulását value a deque-ből. Emeli ValueError ha nem találják. On)
forgatás (n) Elforgatja a deque-t n lépések jobbra. Ha n a negatív balra forog. Rendben van)
világos() Eltávolítja az összes elemet a deque-ből. On)
szám(érték) Számolja az előfordulások számát value a deque-ben. On)
index(érték) Az első előfordulás indexét adja vissza value a deque-ben. Emeli ValueError ha nem találják. On)
fordított() Megfordítja a deque elemeit a helyükön. On)

Sorból álló elemek hozzáfűzése és törlése

  • hozzáfűzés(x): Hozzáadja x-et a deque jobb végéhez.
  • bal oldali függelék (x): Hozzáadja x-et a deque bal végéhez.
  • kiterjeszthető (iterálható): Minden elemet hozzáad az iterálhatótól a jobb végéhez.
  • kinyújtott bal (iterálható): Minden elemet hozzáad az iterálhatótól a bal véghez (fordított sorrendben).
  • eltávolítás(érték): Eltávolítja a megadott érték első előfordulását a deque-ből. Ha az érték nem található, akkor ValueError-t vet fel.
  • pop(): Eltávolít és visszaad egy elemet a jobb oldalról.
  • popleft(): Eltávolít és visszaad egy elemet a bal oldalról.
  • világos(): Eltávolítja az összes elemet a deque-ből.
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  )   

Kimenet:

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

A tétel elérése és a deque hossza

  • Indexelés: Hozzáférés az elemekhez pozíció szerint pozitív vagy negatív indexekkel.
  • csak(): A deque elemeinek számát adja vissza.
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  ))   

Kimenet
1 4 7  

Gróf forgatás és visszafordítás egy deque

  • szám(érték): Ez a módszer megszámolja egy adott elem előfordulásának számát a deque-ben.
  • forgatás (n): Ez a módszer n lépéssel elforgatja a deque-t. A pozitív n jobbra, a negatív n pedig balra forog.
  • fordított(): Ez a módszer megfordítja az elemek sorrendjét a deque-ben.
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  )   

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