Python Academy · leksjon

Samsvar med sekvenser og mappinger

Destrukturer lister og dict-er

Leksjon 2 av 413 trinn

Samsvar med sekvenser og mappinger er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.

Mønstre som destrukturerer

Den egentlige styrken til match er destrukturering. Sekvens- og mappingmønstre lar Dem kontrollere datastrukturen og hente ut verdier samtidig.

Matching av en liste med fast lengde

Et sekvensmønster i hakeparenteser samsvarer med en liste eller tuppel med nøyaktig denne lengden, og knytter hvert element til et navn.

point = [3, 4]

match point:
    case [x, y]:
        print('x =', x, 'y =', y)

Lengden må stemme

Et mønster med to elementer samsvarer ikke med en sekvens med tre elementer. Hvert tilfelle kontrollerer både strukturen og lengden.

data = [1, 2, 3]

match data:
    case [a, b]:
        print('pair')
    case [a, b, c]:
        print('triple:', a, b, c)

Blande litteraler og fangst

De kan fastsette enkelte posisjoner til litteraler og fange andre. Da samsvarer bare sekvenser som starter med den angitte litteralen.

command = ['move', 10, 20]

match command:
    case ['move', dx, dy]:
        print('moving by', dx, dy)
    case ['stop']:
        print('stopping')

Fange resten med *

Et navn med stjerne fanger alle gjenværende elementer som en liste, omtrent som utvidet utpakking.

items = [1, 2, 3, 4, 5]

match items:
    case [first, *rest]:
        print('first:', first)
        print('rest:', rest)

Tomme mønstre og mønstre med ett element

Sekvensmønstre håndterer randtilfeller på en ryddig måte: en tom liste, ett element eller mange elementer.

def describe(seq):
    match seq:
        case []:
            return 'empty'
        case [x]:
            return 'one: ' + str(x)
        case [x, *rest]:
            return 'many, first ' + str(x)

print(describe([]))
print(describe([9]))
print(describe([1, 2, 3]))

Matching av ordbøker

Et mappingmønster bruker krøllparenteser. Det kontrollerer at de angitte nøklene finnes, og knytter verdiene deres til navn. Ekstra nøkler i uttrykket er tillatt.

event = {'type': 'click', 'x': 10, 'y': 20}

match event:
    case {'type': 'click', 'x': x, 'y': y}:
        print('click at', x, y)

Delvis matching av nøkler

Et mappingmønster krever bare nøklene De oppgir. Andre nøkler ignoreres, noe som er nyttig for meldinger med valgfrie felt.

event = {'type': 'key', 'code': 'A', 'extra': 1}

match event:
    case {'type': 'key', 'code': code}:
        print('key pressed:', code)

Fange gjenværende nøkler

Bruk **rest for å fange alle ikke-matchede nøkkel-verdi-par i en ordbok.

event = {'type': 'move', 'dx': 5, 'dy': 7}

match event:
    case {'type': 'move', **rest}:
        print('move details:', rest)

Nestede mønstre

Mønstre kan nøstes fritt. De kan matche en ordbok som inneholder en liste, og destrukturere begge samtidig.

data = {'name': 'grid', 'size': [3, 4]}

match data:
    case {'name': name, 'size': [w, h]}:
        print(name, 'is', w, 'by', h)

Strenger er ikke sekvenser her

Sekvensmønstre samsvarer med hensikt ikke med strenger eller bytes, selv om de kan itereres over. Dette hindrer at en streng utilsiktet blir destrukturert tegn for tegn.

value = 'hi'

match value:
    case [a, b]:
        print('matched as sequence')
    case str():
        print('matched as string')

Kort kontroll

Hva knytter mønsteret [first, *rest] til når det matches mot [1, 2, 3, 4]?

Oppsummering

De har lært å destrukturere lister og ordbøker.

  • Sekvensmønstre kontrollerer lengden og knytter elementer til navn.
  • *rest fanger gjenværende listeelementer.
  • Mappingmønstre matcher nøkler; ekstra nøkler er tillatt.
  • **rest fanger gjenværende ordbokpar, og mønstre kan nøstes.
Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
76
Leksjoner
320

Ofte stilte spørsmål

Er leksjonen «Samsvar med sekvenser og mappinger» gratis?

Ja – hele teksten i «Samsvar med sekvenser og mappinger» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Samsvar med sekvenser og mappinger»?

Destrukturer lister og dict-er Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Python Academy?

Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Samsvar med sekvenser og mappinger»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?

Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Grunnleggende om match og case
  2. Samsvar med sekvenser og mappinger
  3. Klassemønstre
  4. Vilkår og jokertegn
← Tilbake til Python Academy