Ir Python

Ir Python

Deque reiškia dvipusę eilę. Tai specialus duomenų struktūros tipas, leidžiantis efektyviai pridėti ir pašalinti elementus iš abiejų galų.

Skirtingai nuo įprastų eilių (kurios paprastai seka „First In First Out“), deque palaiko ir FIFO, ir LIFO operacijas. Dėl to jis labai lankstus ir naudingas realiose programose, pvz., užduočių planavimo slankiojančiose langų problemose ir duomenų apdorojimas realiuoju laiku.

Pavyzdys:

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

Išvestis
deque(['name' 'age' 'DOB'])  
Todėl

Kodėl mums reikia deque

  • Jis palaiko O (1) laiką, kai pridedami / pašalinami elementai iš abiejų galų.
  • Jis yra efektyvesnis nei priekinių operacijų sąrašai.
  • Jis gali veikti ir kaip eilė (FIFO), ir kaip krūva (LIFO).
  • Idealiai tinka slankiojančių langų problemų planavimui ir duomenų apdorojimui realiuoju laiku.
  • Jis siūlo galingus integruotus metodus, pvz priedas kairėje () popleft () ir pasukti ().

Riboto deque įvesties tipai

  • Įvesties apribotas deque :  Viename gale įvestis ribojama, o abiejuose galuose leidžiama ištrinti.
  • Išvesties apribojimas Deque : išvestis ribojama viename gale, bet leidžiama įterpti abiejuose galuose.

Deque operacijos 

Čia yra lentelė, kurioje pateikiamos įtaisytosios „Python“ dekavimo operacijos su aprašymais ir jų atitinkamu laiko sudėtingumu:

Operacija Aprašymas Laiko sudėtingumas
pridėti (x) Prideda x į dešinįjį deko galą. O(1)
priedas kairėje (x) Prideda x kairiajame deko gale. O(1)
pop () Pašalina ir grąžina elementą iš dešiniojo deko galo. O(1)
popleft () Pašalina ir grąžina elementą iš kairiojo deko galo. O(1)
išplėsti (kartojantis) Prideda visus elementus iš iterable į dešinįjį deko galą. gerai)
išplėstinis kairysis (kartojantis) Prideda visus elementus iš iterable kairiajame dekės gale (atvirkščia tvarka). gerai)
pašalinti (vertė) Pašalina pirmąjį pasireiškimą value iš dekės. Pakelia ValueError jei nerasta. O(n)
pasukti (n) Suka deque n žingsniai į dešinę. Jeigu n yra neigiamas, sukasi į kairę. gerai)
aišku () Pašalina visus elementus iš deque. O(n)
skaičius (vertė) Skaičiuoja įvykių skaičių value dekėje. O(n)
indeksas (reikšmė) Grąžina pirmojo įvykio indeksą value dekėje. Pakelia ValueError jei nerasta. O(n)
atvirkščiai () Apverčia deque elementus į vietą. O(n)

Įtraukimo į eilę elementų pridėjimas ir ištrynimas

  • pridėti (x): Prideda x prie dešiniojo deko galo.
  • priedo kairėje (x): Prideda x prie kairiojo deque galo.
  • išplėsti (kartojama): Prideda visus elementus nuo kartojimo iki dešiniojo galo.
  • išplėstinis kairysis (kartojantis): Prideda visus elementus nuo kartojimo iki kairiojo galo (atvirkščia tvarka).
  • pašalinti (vertė): Pašalina pirmą nurodytos reikšmės atvejį iš deque. Jei vertė nerandama, tai sukelia ValueError.
  • pop(): Pašalina ir grąžina elementą iš dešiniojo galo.
  • popleft (): Pašalina ir grąžina elementą iš kairiojo galo.
  • aišku (): Pašalina visus elementus iš 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  )   

Išvestis:

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

Prieiga prie elemento ir deko trukmė

  • Indeksavimas: Pasiekite elementus pagal padėtį naudodami teigiamus arba neigiamus indeksus.
  • tik (): Grąžina deque elementų skaičių.
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  ))   

Išvestis
1 4 7  

Skaičiavimo pasukimas ir dekės apvertimas

  • skaičius (reikšmė): Šis metodas skaičiuoja konkretaus elemento pasikartojimų skaičių deque.
  • pasukti (n): Šis metodas pasuka deque n žingsnių. Teigiamas n sukasi į dešinę, o neigiamas n sukasi į kairę.
  • atvirkščiai (): Šis metodas pakeičia elementų eiliškumą.
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  )   

Išvestis
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])