Python Academy · Lektion

deque

Brug hurtige dobbeltsidede køer

Lektion 3 af 413 trin

deque er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.

Hvad er en deque?

En deque (udtales »deck«) er en dobbeltsidet kø fra modulet collections. Den understøtter hurtige tilføjelser og fjernelser fra begge ender.

Importér den med from collections import deque.

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

Hvorfor ikke bare en liste?

Lister er langsomme, når du indsætter eller fjerner elementer i begyndelsen, fordi hvert element skal flyttes. En deque udfører operationer i begyndelsen på konstant tid, så den er ideel til køer.

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

Tilføjelse i begge ender

Brug .append() til at tilføje til højre og .appendleft() til at tilføje til venstre.

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

Fjernelse fra begge ender

.pop() fjerner og returnerer elementet længst til højre, mens .popleft() fjerner det element længst til venstre. Begge er hurtige.

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

En simpel kø (FIFO)

For først-ind-først-ud-adfærd skal du tilføje til højre og bruge popleft fra venstre. Elementerne fjernes i den rækkefølge, de ankom i.

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

Begrænset deque med maxlen

Angiv en maxlen for at begrænse størrelsen. Når den er fuld, kasseres et element automatisk fra den ene ende, når du tilføjer i den anden – perfekt til at gemme den seneste historik.

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

Rotering af elementer

.rotate(n) flytter elementerne n trin mod højre, mens en negativ n roterer mod venstre. Elementerne fortsætter fra den modsatte ende.

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

Udvidelse i større mængder

.extend() tilføjer mange elementer til højre, og .extendleft() tilføjer dem til venstre. Bemærk, at extendleft vender rækkefølgen af det, du tilføjer.

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

Indeksering og længde

En deque understøtter indeksering ligesom en liste og fungerer med len(). Adgang til midten er langsommere end adgang til enderne, så foretræk operationer i enderne.

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

Rydning og vending

.reverse() vender deque'en på stedet, og .clear() tømmer den. Begge ændrer deque'en direkte.

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

Optælling af forekomster

Ligesom en liste har en deque .count() til at tælle, hvor ofte en værdi forekommer.

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

Hurtigt tjek

Du opbygger en FIFO-kø med en deque. Hvilket par af metoder giver den korrekte først-ind-først-ud-rækkefølge?

Opsummering: deque

Du har lært, at en deque:

  • Understøtter hurtig append/pop i begge ender i modsætning til en liste.
  • Har appendleft og popleft til venstre side.
  • Kan begrænses med maxlen, så kun de seneste elementer bevares.
  • Tilbyder rotate, extend, reverse og count til købaserede opgaver.
from collections import deque
q = deque(maxlen=2)
for x in ['a', 'b', 'c']:
    q.append(x)
print(q)
Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
76
Lektioner
320

Ofte stillede spørgsmål

Er lektionen “deque” gratis?

Ja — hele teksten til “deque” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “deque”?

Brug hurtige dobbeltsidede køer Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Python Academy?

Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “deque”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Python Academy-lektion?

Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Counter
  2. defaultdict
  3. deque
  4. namedtuple og OrderedDict
← Tilbage til Python Academy