A v Pythonu

A v Pythonu

Deque znamená Double-Ended Queue. Jedná se o speciální typ datové struktury, která umožňuje efektivně přidávat a odebírat prvky z obou konců.

Na rozdíl od normálních front (které obvykle následují First In First Out) deque podporuje operace FIFO i LIFO. Díky tomu je velmi flexibilní a užitečný v aplikacích reálného světa, jako je plánování úloh s posuvnými okny a zpracování dat v reálném čase.

Příklad:

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

Výstup
deque(['name' 'age' 'DOB'])  
Proto

Proč potřebujeme deque

  • Podporuje čas O(1) pro přidávání/odebírání prvků z obou konců.
  • Pro front-end operace je to efektivnější než seznamy.
  • Může fungovat jako fronta (FIFO) i jako zásobník (LIFO).
  • Ideální pro plánování problémů s posuvnými okny a zpracování dat v reálném čase.
  • Nabízí výkonné vestavěné metody jako appendleft() popleft() a střídat().

Typy omezeného vstupu Deque

  • Input Restricted Deque :  Vstup je omezen na jednom konci, zatímco mazání je povoleno na obou koncích.
  • Omezený výstup Deque : výstup je omezen na jednom konci, ale vkládání je povoleno na obou koncích.

Operace na deque 

Zde je tabulka se seznamem vestavěných operací deque v Pythonu s popisy a jejich odpovídající časovou složitostí:

Operace Popis Časová složitost
připojit (x) Přidá x na pravý konec deque. O(1)
appendleft(x) Přidá x na levý konec deque. O(1)
pop() Odebere a vrátí prvek z pravého konce deque. O(1)
popleft() Odebere a vrátí prvek z levého konce deque. O(1)
rozšířit (opakovatelné) Přidá všechny prvky z iterable na pravý konec deque. dobře)
prodloužit doleva (iterovatelný) Přidá všechny prvky z iterable na levý konec deque (obrácené pořadí). dobře)
odstranit (hodnota) Odstraní první výskyt value z deque. Zvyšuje ValueError pokud nebyl nalezen. Na)
otočit (n) Otočí deque n kroky doprava. Li n je negativní se otáčí doleva. dobře)
jasný() Odebere všechny prvky z deque. Na)
počítat (hodnota) Počítá počet výskytů value v deque. Na)
index (hodnota) Vrátí index prvního výskytu value v deque. Zvyšuje ValueError pokud nebyl nalezen. Na)
zvrátit() Obrátí prvky deque na místě. Na)

Připojování a odstraňování položek zařazených do fronty

  • připojit (x): Přidá x na pravý konec deque.
  • appendleft(x): Přidá x na levý konec deque.
  • rozšířit (iterovatelné): Přidá všechny prvky z iterovatelného na pravý konec.
  • extendleft (iterovatelné): Přidá všechny prvky z iterovatelného na levý konec (v opačném pořadí).
  • odstranit (hodnota): Odebere první výskyt zadané hodnoty z deque. Pokud hodnota není nalezena, vyvolá ValueError.
  • pop(): Odebere a vrací prvek z pravého konce.
  • popleft(): Odebere a vrací prvek z levého konce.
  • jasný(): Odebere všechny prvky z 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  )   

výstup:

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

Přístup k položce a délka deque

  • Indexování: Přístup k prvkům podle pozice pomocí kladných nebo záporných indexů.
  • pouze(): Vrátí počet prvků v 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  ))   

Výstup
1 4 7  

Počet otočení a obrácení deque

  • počet (hodnota): Tato metoda počítá počet výskytů konkrétního prvku v deque.
  • otočit (n): Tato metoda otočí deque o n kroků. Kladné n se otáčí doprava a záporné n se otáčí doleva.
  • zvrátit(): Tato metoda obrátí pořadí prvků v deque.
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  )   

Výstup
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])