0Pricing
Python Academy · Lekcja

Dopasowywanie sekwencji i mapowań

Destrukturyzuj listy i słowniki

Dopasowywanie sekwencji i mapowań to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 2 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.

Wzorce wykonujące destrukturyzację

Prawdziwa siła match tkwi w destrukturyzacji. Wzorce sekwencji i mapowania pozwalają jednocześnie sprawdzić strukturę danych i wyodrębnić z nich wartości.

Dopasowywanie listy o stałej długości

Wzorzec sekwencji zapisany w nawiasach kwadratowych pasuje do listy lub krotki o dokładnie określonej długości, przypisując każdy element do nazwy.

point = [3, 4]

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

Długość musi się zgadzać

Wzorzec z dwoma elementami nie pasuje do sekwencji złożonej z trzech elementów. Każdy przypadek sprawdza zarówno strukturę, jak i długość.

data = [1, 2, 3]

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

Łączenie literałów i przechwytywania

Niektóre pozycje można ustawić jako literały, a inne przechwycić. W ten sposób pasują tylko sekwencje rozpoczynające się od danego literału.

command = ['move', 10, 20]

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

Przechwytywanie reszty za pomocą *

Nazwa poprzedzona gwiazdką przechwytuje wszystkie pozostałe elementy jako listę, podobnie jak rozszerzone rozpakowywanie.

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

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

Wzorce puste i jednoelementowe

Wzorce sekwencji przejrzyście obsługują przypadki brzegowe: pustą listę, pojedynczy element lub wiele elementów.

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]))

Dopasowywanie słowników

Wzorzec mapowania używa nawiasów klamrowych. Sprawdza, czy podane klucze są obecne, i przypisuje ich wartości do nazw. Dodatkowe klucze w sprawdzanej wartości są dozwolone.

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

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

Częściowe dopasowywanie kluczy

Wzorzec mapowania wymaga tylko wymienionych kluczy. Pozostałe klucze są ignorowane, co świetnie sprawdza się w przypadku komunikatów z opcjonalnymi polami.

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

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

Przechwytywanie pozostałych kluczy

Za pomocą **rest można przechwycić wszystkie niedopasowane pary klucz-wartość do słownika.

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

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

Zagnieżdżanie wzorców

Wzorce można swobodnie zagnieżdżać. Można dopasować słownik zawierający listę i jednocześnie wykonać destrukturyzację obu struktur.

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

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

Napisy nie są tu sekwencjami

Wzorce sekwencji celowo nie pasują do napisów ani bajtów, mimo że można je iterować. Zapobiega to przypadkowej destrukturyzacji napisu znak po znaku.

value = 'hi'

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

Szybkie sprawdzenie

Co przypisuje wzorzec [first, *rest] po dopasowaniu do [1, 2, 3, 4]?

Podsumowanie

Nauczyli się Państwo wykonywać destrukturyzację list i słowników.

  • Wzorce sekwencji sprawdzają długość i przypisują elementy do nazw.
  • *rest przechwytuje pozostałe elementy listy.
  • Wzorce mapowania dopasowują klucze, a dodatkowe klucze są dozwolone.
  • **rest przechwytuje pozostałe pary słownika, a wzorce można zagnieżdżać.

Często zadawane pytania

Czy lekcja „Dopasowywanie sekwencji i mapowań” jest bezpłatna?

Tak — pełny tekst „Dopasowywanie sekwencji i mapowań” 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 „Dopasowywanie sekwencji i mapowań”?

Destrukturyzuj listy i słowniki Ć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 2 z 4.

Ile czasu zajmuje lekcja „Dopasowywanie sekwencji i mapowań”?

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. Podstawy match i case
  2. Dopasowywanie sekwencji i mapowań
  3. Wzorce klas
  4. Strażnicy i symbole wieloznaczne
← Powrót do Python Academy