logo

И у Пајтону

Декуе је скраћеница за Доубле-Ендед Куеуе. То је посебна врста структуре података која вам омогућава да ефикасно додајете и уклањате елементе са оба краја.

За разлику од нормалних редова (који обично прате први ушао, први изашао), декуе подржава и ФИФО и ЛИФО операције. Ово га чини веома флексибилним и корисним у апликацијама из стварног света, као што су проблеми са клизним прозором у распореду задатака и обрада података у реалном времену.



Пример:

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

Излаз
deque(['name' 'age' 'DOB']) 
Стога' title=

Зашто нам треба декуе

  • Подржава О(1) време за додавање/уклањање елемената са оба краја.
  • Ефикаснији је од листа за фронт-енд операције.
  • Може да функционише и као ред (ФИФО) и као стек (ЛИФО).
  • Идеално за заказивање проблема са клизним прозором и обраду података у реалном времену.
  • Нуди моћне уграђене методе као што су аппендлефт() поплефт() и ротирати().

Типови ограниченог декуе улаза

  • Инпут Рестрицтед Декуе :  Унос је ограничен на једном крају док је брисање дозвољено на оба краја.
  • Оутпут Рестрицтед Декуе : излаз је ограничен на једном крају, али је уметање дозвољено на оба краја.

Операције на декуе 

Ево табеле која наводи уграђене операције дека у Питхон-у са описима и њиховом одговарајућом временском сложеношћу:

класа против објекта јава
Операција Опис Временска сложеност
додај(к) Додајеxдо десног краја дека.О(1)
аппендлефт(к) Додајеxдо левог краја дека.О(1)
поп() Уклања и враћа елемент са десног краја низа.О(1)
поплефт() Уклања и враћа елемент са левог краја низа.О(1)
проширити (итерабле) Додаје све елементе изiterableдо десног краја дека.у реду)
ектендлефт (итерабле) Додаје све елементе изiterableдо левог краја дека (обрнути редослед).у реду)
уклони (вредност) Уклања прво појављивањеvalueиз дека. РаисесValueErrorако се не нађе.О(н)
ротирати (н) Ротира декуеnкораци удесно. Акоnје негативан ротира улево.у реду)
цлеар() Уклања све елементе из дека.О(н)
број (вредност) Броји број појављивањаvalueу деку.О(н)
индекс (вредност) Враћа индекс првог појављивањаvalueу деку. РаисесValueErrorако се не нађе.О(н)
реверсе() Преокреће елементе дека на месту.О(н)

Додавање и брисање ставки из реда

  • додај(к): Додаје к на десни крај низа.
  • аппендлефт(к): Додаје к на леви крај низа.
  • проширити (итерабле): Додаје све елементе из итерабле на десни крај.
  • ектендлефт(итерабле): Додаје све елементе из итерабле на леви крај (обрнутим редоследом).
  • уклони (вредност): Уклања прво појављивање наведене вредности из низа. Ако вредност није пронађена, покреће се ВалуеЕррор.
  • поп(): Уклања и враћа елемент са десног краја.
  • поплефт(): Уклања и враћа елемент са левог краја.
  • цлеар(): Уклања све елементе из дека.
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) 

Излаз:

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

Приступ предмету и дужина дека

  • Индексирање: Приступите елементима по позицији користећи позитивне или негативне индексе.
  • само(): Враћа број елемената у низу.
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)) 

Излаз
1 4 7 

Ротација бројања и преокрет дека

  • цоунт(вредност): Овај метод броји број појављивања одређеног елемента у низу.
  • ротирати(н): Овај метод ротира декуе за н корака. Позитивно н се ротира удесно, а негативно н се ротира улево.
  • обрнуто (): Овај метод мења редослед елемената у низу.
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) 

Излаз
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])