logo

É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' title=

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:

hogyan lehet zenét letölteni
Művelet Leírás Idő összetettsége
hozzáfűzés(x) Hozzáadxa deque jobb végére.O(1)
bal oldali függelék (x) Hozzáadxa 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 inneniterablea deque jobb végére.Rendben van)
kinyújtott bal (iterálható) Hozzáadja az összes elemet inneniterablea deque bal végére (fordított sorrend).Rendben van)
eltávolítás(érték) Eltávolítja az első előfordulásátvaluea deque-ből. EmeliValueErrorha nem találják.On)
forgatás (n) Elforgatja a deque-tnlépések jobbra. Hana 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átvaluea deque-ben.On)
index(érték) Az első előfordulás indexét adja visszavaluea deque-ben. EmeliValueErrorha 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])