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.
*restprzechwytuje pozostałe elementy listy.- Wzorce mapowania dopasowują klucze, a dodatkowe klucze są dozwolone.
**restprzechwytuje 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
- Podstawy match i case
- Dopasowywanie sekwencji i mapowań
- Wzorce klas
- Strażnicy i symbole wieloznaczne