0Pricing
Python Academy · Lekcja

deque

Używaj szybkich kolejek dwustronnych

deque to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

Czym jest deque?

deque (wymawiane „dek”) to kolejka dwustronna z modułu collections. Obsługuje szybkie dodawanie i usuwanie elementów z obu końców.

Zaimportuj ją za pomocą from collections import deque.

from collections import deque
d = deque([1, 2, 3])
print(d)

Dlaczego nie użyć po prostu listy?

Listy działają wolno podczas wstawiania lub usuwania elementów z początku, ponieważ każdy element musi zostać przesunięty. Obiekt deque wykonuje operacje na początku w stałym czasie, dzięki czemu idealnie nadaje się do implementacji kolejek.

from collections import deque
d = deque(['b', 'c'])
d.appendleft('a')
print(d)

Dodawanie elementów z obu stron

Proszę użyć .append(), aby dodać element z prawej strony, oraz .appendleft(), aby dodać go z lewej.

from collections import deque
d = deque()
d.append(1)
d.append(2)
d.appendleft(0)
print(d)

Usuwanie elementów z obu stron

.pop() usuwa i zwraca element znajdujący się najbardziej z prawej strony, a .popleft() usuwa element z lewej. Obie operacje są szybkie.

from collections import deque
d = deque([10, 20, 30])
print(d.pop())
print(d.popleft())
print(d)

Prosta kolejka (FIFO)

Aby uzyskać działanie FIFO, proszę dodawać elementy z prawej strony i usuwać je za pomocą popleft z lewej. Elementy opuszczają kolejkę w kolejności, w której do niej trafiły.

from collections import deque
queue = deque()
queue.append('first')
queue.append('second')
print(queue.popleft())
print(queue.popleft())

Ograniczony deque z maxlen

Proszę podać wartość maxlen, aby ograniczyć rozmiar. Gdy deque jest pełny, dodanie elementu z jednego końca automatycznie usuwa element z drugiego — to świetne rozwiązanie do przechowywania najnowszej historii.

from collections import deque
recent = deque(maxlen=3)
for n in [1, 2, 3, 4, 5]:
    recent.append(n)
print(recent)

Cykliczne przesuwanie elementów

.rotate(n) przesuwa elementy w prawo o n pozycji, a ujemne n obraca je w lewo. Elementy przechodzą cyklicznie na przeciwny koniec.

from collections import deque
d = deque([1, 2, 3, 4, 5])
d.rotate(2)
print(d)
d.rotate(-1)
print(d)

Masowe rozszerzanie

.extend() dodaje wiele elementów z prawej strony, a .extendleft() dodaje je z lewej. Należy pamiętać, że extendleft odwraca kolejność dodawanych elementów.

from collections import deque
d = deque([3])
d.extend([4, 5])
d.extendleft([2, 1])
print(d)

Indeksowanie i długość

Deque obsługuje indeksowanie podobnie jak lista i współpracuje z len(). Dostęp do środkowych elementów jest wolniejszy niż dostęp do końców, dlatego warto preferować operacje na końcach.

from collections import deque
d = deque(['a', 'b', 'c'])
print(d[0])
print(d[-1])
print(len(d))

Czyszczenie i odwracanie

.reverse() odwraca deque w miejscu, a .clear() usuwa z niego wszystkie elementy. Obie metody modyfikują deque bezpośrednio.

from collections import deque
d = deque([1, 2, 3])
d.reverse()
print(d)
d.clear()
print(d)

Zliczanie wystąpień

Podobnie jak lista, deque udostępnia metodę .count(), która zlicza, ile razy występuje dana wartość.

from collections import deque
d = deque([1, 2, 2, 3, 2])
print(d.count(2))

Szybkie sprawdzenie

Buduje Pan/Pani kolejkę FIFO za pomocą deque. Która para metod zapewnia prawidłową kolejność FIFO?

Podsumowanie: deque

Dowiedział się Pan/Dowiedziała się Pani, że deque:

  • obsługuje szybkie operacje append/pop na obu końcach, w przeciwieństwie do listy;
  • udostępnia appendleft i popleft do operacji po lewej stronie;
  • może mieć ograniczony rozmiar za pomocą maxlen, aby przechowywać tylko najnowsze elementy;
  • udostępnia metody rotate, extend, reverse i count przydatne w pracy z kolejkami.
from collections import deque
q = deque(maxlen=2)
for x in ['a', 'b', 'c']:
    q.append(x)
print(q)

Często zadawane pytania

Czy lekcja „deque” jest bezpłatna?

Tak — pełny tekst „deque” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „deque”?

Używaj szybkich kolejek dwustronnych Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „deque”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Counter
  2. defaultdict
  3. deque
  4. namedtuple i OrderedDict
← Powrót do Python Academy