logo

I w Pythonie

Deque oznacza kolejkę dwukończoną. Jest to specjalny typ struktury danych, który pozwala efektywnie dodawać i usuwać elementy z obu końców.

W przeciwieństwie do normalnych kolejek (które zwykle następują po kolejności „pierwsze weszło, pierwsze wyszło”) deque obsługuje zarówno operacje FIFO, jak i LIFO. Dzięki temu jest bardzo elastyczny i przydatny w rzeczywistych zastosowaniach, takich jak problemy z przesuwaniem się okna planowania zadań i przetwarzanie danych w czasie rzeczywistym.



Przykład:

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

Wyjście
deque(['name' 'age' 'DOB']) 
Dlatego' title=

Dlaczego potrzebujemy deque

  • Obsługuje czas O(1) do dodawania/usuwania elementów z obu końców.
  • Jest bardziej wydajny niż listy do operacji front-end.
  • Może pełnić funkcję zarówno kolejki (FIFO), jak i stosu (LIFO).
  • Idealny do planowania problemów z przesuwanymi oknami i przetwarzania danych w czasie rzeczywistym.
  • Oferuje potężne wbudowane metody, takie jak dodatek po lewej() popleft() I obracać().

Rodzaje ograniczonego wejścia Deque

  • Deque ograniczonego wejścia :  Wprowadzanie danych jest ograniczone z jednej strony, a usuwanie jest dozwolone z obu stron.
  • Ograniczenie wyjścia : wyjście jest ograniczone na jednym końcu, ale podłączenie jest dozwolone na obu końcach.

Operacje na deque 

Oto tabela zawierająca wbudowane operacje deque w Pythonie wraz z opisami i odpowiadającymi im złożonościami czasowymi:

wyszukiwanie liniowe w Javie
Działanie Opis Złożoność czasu
dołącz (x) Dodajexna prawy koniec deque.O(1)
dodatek po lewej stronie (x) Dodajexdo lewego końca deque.O(1)
muzyka pop() Usuwa i zwraca element z prawego końca deque.O(1)
popleft() Usuwa i zwraca element z lewego końca deque.O(1)
rozszerzać (iterowalny) Dodaje wszystkie elementy ziterablena prawy koniec deque.W porządku)
przedłuż w lewo(iterowalny) Dodaje wszystkie elementy ziterablena lewy koniec deque (odwrotna kolejność).W porządku)
usuń(wartość) Usuwa pierwsze wystąpienievaluez deka. PodnosiValueErrorjeśli nie zostanie znaleziony.NA)
obrócić (n) Obraca dequenkroki w prawo. Jeślinjest ujemny, obraca się w lewo.W porządku)
jasne() Usuwa wszystkie elementy z deque.NA)
liczba (wartość) Zlicza liczbę wystąpieńvaluew deku.NA)
indeks (wartość) Zwraca indeks pierwszego wystąpieniavaluew deku. PodnosiValueErrorjeśli nie zostanie znaleziony.NA)
odwracać() Odwraca elementy deque na miejscu.NA)

Dołączanie i usuwanie elementów z kolejki

  • dołącz(x): Dodaje x na prawym końcu deque.
  • dodatek po lewej stronie (x): Dodaje x do lewego końca deque.
  • rozszerzać (iterowalny): Dodaje wszystkie elementy od iterowalnego do prawego końca.
  • przedłuż w lewo(iterowalny): Dodaje wszystkie elementy z iterowalnego końca na lewy koniec (w odwrotnej kolejności).
  • usuń(wartość): Usuwa pierwsze wystąpienie określonej wartości z deque. Jeśli wartość nie zostanie znaleziona, zgłosi błąd ValueError.
  • muzyka pop(): Usuwa i zwraca element z prawego końca.
  • popleft(): Usuwa i zwraca element z lewego końca.
  • jasne(): Usuwa wszystkie elementy 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) 

Wyjście:

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

Dostęp do elementu i długość deque

  • Indeksowanie: Dostęp do elementów według pozycji przy użyciu indeksów dodatnich lub ujemnych.
  • tylko(): Zwraca liczbę elementów w 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)) 

Wyjście
1 4 7 

Liczba rotacji i odwrócenia deque

  • liczba(wartość): Ta metoda zlicza liczbę wystąpień określonego elementu w deque.
  • obrócić (n): Ta metoda obraca deque o n kroków. Dodatnie n obraca się w prawo, a ujemne n obraca się w lewo.
  • odwracać(): Ta metoda odwraca kolejność elementów w 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) 

Wyjście
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])