logo

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

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í:

průmysl a továrna
Operace Popis Časová složitost
připojit (x) Přidáxna pravý konec deque.O(1)
appendleft(x) Přidáxna 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 ziterablena pravý konec deque.dobře)
prodloužit doleva (iterovatelný) Přidá všechny prvky ziterablena levý konec deque (obrácené pořadí).dobře)
odstranit (hodnota) Odstraní první výskytvaluez deque. ZvyšujeValueErrorpokud nebyl nalezen.Na)
otočit (n) Otočí dequenkroky doprava. Linje negativní se otáčí doleva.dobře)
jasný() Odebere všechny prvky z deque.Na)
počítat (hodnota) Počítá počet výskytůvaluev deque.Na)
index (hodnota) Vrátí index prvního výskytuvaluev deque. ZvyšujeValueErrorpokud 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])