Python Academy · Lektion

deque

Använd snabba dubbellänkade köer

Lektion 3 av 413 steg

deque är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad är en deque?

En deque (uttalas ”deck”) är en kö med två ändar från modulen collections. Den stöder snabba tillägg och borttagningar från båda ändarna.

Importera den med from collections import deque.

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

Varför inte bara en lista?

Listor är långsamma när du infogar eller tar bort element längst fram, eftersom varje element måste flyttas. En deque utför operationer längst fram på konstant tid, vilket gör den idealisk för köer.

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

Lägga till i båda ändarna

Använd .append() för att lägga till till höger och .appendleft() för att lägga till till vänster.

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

Ta bort från båda ändarna

.pop() tar bort och returnerar det högra elementet, medan .popleft() tar bort det vänstra. Båda operationerna är snabba.

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

En enkel kö (FIFO)

För FIFO-beteende lägger du till element till höger och tar bort dem från vänster med popleft. Elementen lämnar kön i den ordning de kom in.

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

Begränsad deque med maxlen

Ange ett maxlen för att begränsa storleken. När kön är full tas ett element automatiskt bort från den ena änden när du lägger till ett element i den andra – perfekt när du bara vill behålla den senaste historiken.

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

Rotera element

.rotate(n) flyttar elementen åt höger med n steg. Ett negativt n roterar åt vänster. Elementen flyttas runt och återkommer i andra änden.

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

Utöka med flera element

.extend() lägger till flera element till höger och .extendleft() lägger till dem till vänster. Observera att extendleft vänder på ordningen för det du lägger till.

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

Indexering och längd

En deque stöder indexering på samma sätt som en lista och fungerar med len(). Det går långsammare att komma åt mitten än ändarna, så använd helst operationer i ändarna.

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

Tömma och vända

.reverse() vänder deque:n på plats, och .clear() tömmer den. Båda ändrar deque:n direkt.

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

Räkna förekomster

Precis som en lista har en deque .count() för att räkna hur många gånger ett värde förekommer.

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

Snabbtest

Du bygger en FIFO-kö med en deque. Vilket metodpar ger korrekt först-in-först-ut-ordning?

Sammanfattning: deque

Du har lärt dig att en deque:

  • Stöder snabba append/pop-operationer i båda ändarna, till skillnad från en lista.
  • Har appendleft och popleft för den vänstra sidan.
  • Kan begränsas med maxlen så att bara de senaste elementen behålls.
  • Erbjuder rotate, extend, reverse och count för köliknande arbete.
from collections import deque
q = deque(maxlen=2)
for x in ['a', 'b', 'c']:
    q.append(x)
print(q)
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”deque” gratis?

Ja – hela texten till ”deque” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”deque”?

Använd snabba dubbellänkade köer Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”deque”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Counter
  2. defaultdict
  3. deque
  4. namedtuple och OrderedDict
← Tillbaka till Python Academy