I w Pythonie

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

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:

Działanie Opis Złożoność czasu
dołącz (x) Dodaje x na prawy koniec deque. O(1)
dodatek po lewej stronie (x) Dodaje x do 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 z iterable na prawy koniec deque. W porządku)
przedłuż w lewo(iterowalny) Dodaje wszystkie elementy z iterable na lewy koniec deque (odwrotna kolejność). W porządku)
usuń(wartość) Usuwa pierwsze wystąpienie value z deka. Podnosi ValueError jeśli nie zostanie znaleziony. NA)
obrócić (n) Obraca deque n kroki w prawo. Jeśli n jest ujemny, obraca się w lewo. W porządku)
jasne() Usuwa wszystkie elementy z deque. NA)
liczba (wartość) Zlicza liczbę wystąpień value w deku. NA)
indeks (wartość) Zwraca indeks pierwszego wystąpienia value w deku. Podnosi ValueError jeś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])