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/popna obu końcach, w przeciwieństwie do listy; - udostępnia
appendleftipopleftdo operacji po lewej stronie; - może mieć ograniczony rozmiar za pomocą
maxlen, aby przechowywać tylko najnowsze elementy; - udostępnia metody
rotate,extend,reverseicountprzydatne 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.