logo

I to u Pythonu

Deque je kratica za Double-Ended Queue. To je posebna vrsta strukture podataka koja vam omogućuje učinkovito dodavanje i uklanjanje elemenata s oba kraja.

Za razliku od normalnih redova (koji obično slijede prvi ušao prvi izašao), deque podržava i FIFO i LIFO operacije. To ga čini vrlo fleksibilnim i korisnim u aplikacijama iz stvarnog svijeta kao što su problemi s kliznim prozorom za raspored zadataka i obrada podataka u stvarnom vremenu.



Primjer:

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

Izlaz
deque(['name' 'age' 'DOB']) 
Stoga' title=

Zašto nam treba deque

  • Podržava O(1) vrijeme za dodavanje/uklanjanje elemenata s oba kraja.
  • Učinkovitiji je od popisa za front-end operacije.
  • Može funkcionirati i kao red (FIFO) i kao stog (LIFO).
  • Idealno za planiranje problema s kliznim prozorom i obradu podataka u stvarnom vremenu.
  • Nudi moćne ugrađene metode poput dodatilijevo() popleft() i rotirati().

Vrste ograničenog deque unosa

  • Input Restricted Deque :  Unos je ograničen na jednom kraju dok je brisanje dopušteno na oba kraja.
  • Izlaz ograničen deque : izlaz je ograničen na jednom kraju, ali je umetanje dopušteno na oba kraja.

Operacije na deque 

Evo tablice s popisom ugrađenih operacija deque-a u Pythonu s opisima i njihovom odgovarajućom vremenskom složenošću:

slušaj luku
Operacija Opis Vremenska složenost
dodati(x) dodajexna desni kraj deke.O(1)
dodatak lijevo(x) dodajexna lijevi kraj deke.O(1)
pop() Uklanja i vraća element s desnog kraja dequea.O(1)
popleft() Uklanja i vraća element s lijevog kraja dequea.O(1)
proširiti (iterable) Dodaje sve elemente iziterablena desni kraj deke.dobro)
produženo lijevo (iterativno) Dodaje sve elemente iziterablena lijevi kraj deque (obrnutim redoslijedom).dobro)
ukloniti (vrijednost) Uklanja prvo pojavljivanjevalueiz deke. PodižeValueErrorako se ne nađe.Na)
rotirati (n) Rotira dequenkorake udesno. Akonje negativan rotira ulijevo.dobro)
jasan() Uklanja sve elemente iz dequea.Na)
broj (vrijednost) Broji broj pojavljivanjavalueu deque.Na)
indeks(vrijednost) Vraća indeks prvog pojavljivanjavalueu deque. PodižeValueErrorako se ne nađe.Na)
obrnuti () Preokreće elemente deque na mjestu.Na)

Dodavanje i brisanje stavki iz reda čekanja

  • dodati(x): Dodaje x na desni kraj dequea.
  • dodati lijevo(x): Dodaje x na lijevi kraj dequea.
  • proširiti (iterable): Dodaje sve elemente od iterable do desnog kraja.
  • produži lijevo (iterabilno): Dodaje sve elemente od iterable do lijevog kraja (obrnutim redoslijedom).
  • ukloniti (vrijednost): Uklanja prvo pojavljivanje navedene vrijednosti iz dequea. Ako vrijednost nije pronađena, javlja se ValueError.
  • pop(): Uklanja i vraća element s desnog kraja.
  • popleft(): Uklanja i vraća element s lijevog kraja.
  • jasan(): Uklanja sve elemente iz dequea.
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) 

Izlaz:

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

Pristup stavci i duljina dequea

  • Indeksiranje: Pristupite elementima po položaju koristeći pozitivne ili negativne indekse.
  • samo(): Vraća broj elemenata u dequeu.
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)) 

Izlaz
1 4 7 

Rotacija brojanja i preokret dequea

  • broj(vrijednost): Ova metoda broji broj pojavljivanja određenog elementa u dequeu.
  • rotiraj(n): Ova metoda rotira deque za n koraka. Pozitivan n rotira udesno, a negativan n ulijevo.
  • obrnuto(): Ova metoda obrće redoslijed elemenata u dequeu.
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) 

Izlaz
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])