logo

Un Python valodā

Deque apzīmē Double-Ended Queue. Tas ir īpašs datu struktūras veids, kas ļauj efektīvi pievienot un noņemt elementus no abiem galiem.

Atšķirībā no parastajām rindām (kas parasti seko First In First Out) deque atbalsta gan FIFO, gan LIFO darbības. Tas padara to ļoti elastīgu un noderīgu reālās pasaules lietojumprogrammās, piemēram, uzdevumu plānošanas bīdāmo logu problēmas un reāllaika datu apstrādi.



Piemērs:

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

Izvade
deque(['name' 'age' 'DOB']) 
Tāpēc' title=

Kāpēc mums vajag deque

  • Tas atbalsta O(1) laiku elementu pievienošanai/noņemšanai no abiem galiem.
  • Tas ir efektīvāks nekā priekšgala operāciju saraksti.
  • Tas var darboties gan kā rinda (FIFO), gan kā kaudze (LIFO).
  • Ideāli piemērots bīdāmo logu problēmu plānošanai un reāllaika datu apstrādei.
  • Tā piedāvā jaudīgas iebūvētas metodes, piemēram appendleft() popleft() un pagriezt ().

Ierobežotās deque ievades veidi

  • Ievades ierobežota deque : Ievade ir ierobežota vienā galā, savukārt dzēšana ir atļauta abos galos.
  • Output Restricted Deque : izvade ir ierobežota vienā galā, bet ievietošana ir atļauta abos galos.

Operācijas uz deque 

Šeit ir tabula, kurā uzskaitītas Python iebūvētās deque operācijas ar aprakstiem un to atbilstošo laika sarežģītību:

cipari alfabētā
Darbība Apraksts Laika sarežģītība
pievienot (x) Pievienoxdekas labajā galā.O(1)
pielikums pa kreisi (x) Pievienoxuz dekas kreiso galu.O(1)
pop() Noņem un atgriež elementu no deque labā gala.O(1)
popleft() Noņem un atgriež elementu no deque kreisā gala.O(1)
paplašināt (atkārtojams) Pievieno visus elementus noiterabledekas labajā galā.labi)
pagarināts pa kreisi (atkārtojams) Pievieno visus elementus noiterabledekas kreisajā galā (apgrieztā secībā).labi)
noņemt(vērtība) Noņem pirmo gadījumuvalueno dekas. PaaugstinaValueErrorja nav atrasts.O(n)
pagriezt (n) Pagriež dequensoļi pa labi. Janir negatīvs, griežas pa kreisi.labi)
skaidrs () Noņem visus elementus no deque.O(n)
skaits (vērtība) Uzskaita gadījumu skaituvaluedekā.O(n)
indekss(vērtība) Atgriež indeksu, kas pirmo reizi parādāsvaluedekā. PaaugstinaValueErrorja nav atrasts.O(n)
reverse() Apgriež dekas elementus vietā.O(n)

Rindas vienumu pievienošana un dzēšana

  • pievienot (x): Dekas labajā galā pievieno x.
  • pielikums pa kreisi (x): Dekas kreisajā galā pievieno x.
  • paplašināt (atkārtot): Pievieno visus elementus no iterējamā līdz labajam galam.
  • pagarināts pa kreisi (atkārtojams): Pievieno visus elementus no iterējamā līdz kreisajam galam (apgrieztā secībā).
  • noņemt(vērtība): Noņem norādītās vērtības pirmo reizi no deque. Ja vērtība netiek atrasta, tas rada ValueError.
  • pop(): Noņem un atgriež elementu no labā gala.
  • popleft(): Noņem un atgriež elementu no kreisā gala.
  • skaidrs (): Noņem visus elementus no 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) 

Izvade:

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

Piekļuve vienumam un deque garums

  • Indeksēšana: Piekļūstiet elementiem pēc pozīcijas, izmantojot pozitīvus vai negatīvus indeksus.
  • tikai (): Atgriež elementu skaitu dekvē.
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)) 

Izvade
1 4 7 

Skaita rotācija un dekas apgriešana

  • skaits (vērtība): Šī metode uzskaita konkrēta elementa parādību skaitu dekvē.
  • pagriezt (n): Šī metode pagriež deque par n soļiem. Pozitīvais n griežas pa labi un negatīvais n griežas pa kreisi.
  • reverse(): Šī metode maina elementu secību dekvē.
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) 

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