Rozdział 11 · Mnóstwo informacji!
Mini-projekt – przekształcenie imienia i nazwiska
Zgromadzić split(), rozpakowania i wersy z rozdziału 8 w jednym krótkim, ale przydatnym programie — i podsumować cały rozdział.
Finalny mini-projekt rozdziału: podzielić pełne imię na części i złożyć ponownie w innej kolejności — „Nazwisko Imię” zamiast „Imię Nazwisko”, używając metod pracy ze stringami z rozdziału 8 i list z tego rozdziału.
perestanovka_imeni.py
full_name = input(„Wprowadź imię i nazwisko oddzielone spację: ”)
parts = full_name.split() #split() powraca lista
name, surname = parts # rozpakowywanie jak krotki
print(f"{surname} {name}")
split() powraca lista
Widzieliśmy
.split() w rozdziale 8, ale nie podkreślił, że wynik jest właśnie list. Teraz, znając listy, można go rozpakowywać tak samo, jak rozpakowywano krotki w §11.13.Challenge
Trzy części nazwy
Rozwinąć sprawę z patronimikiem (trzy słowa): "Imię Nazwisko Nazwisko Nazwisko" → "Nazwisko pełne Imię" z inicjałami.
Praktyka: zamiana imienia i nazwiska
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Podsumowanie rozdziału
Zestaw podsumowujący rozdział 11
Czy potrzebujesz pary klucz→wartość?
→
dict
Potrzebne są tylko unikalne wartości, kolejność nie jest ważna?
→
set
Potrzebny jest porządek, wartości na pewno się nie zmienią?
→
tuple
Potrzebujesz zamówienia i będziesz musiał zmienić zawartość?
→
list
Potrzebujesz niezmiennego zestawu unikalnych wartości?
→
frozenset
Potrzebujesz pozycji i wartości razem, gdy używasz siły?
→
enumerate(...)
Czy musisz przeglądać kilka kolekcji parami?
→
zip(...)
Potrzebna nowa kolekcja przekształcona ze starej?
→
comprehension
Potrzebujesz niezależnej kopii zewnętrznej?
→
.copy() / list(...) / [:]
Potrzebna całkowicie niezależna kopia zagnieżdżonych struktur?
→
copy.deepcopy(...) ostrożnie
Czego nauczyliśmy się w tym rozdziale
- Lista (
list) to uporządkowana, modyfikowalna kolekcja w[]: indeksy, wycinki, append/extend/insert, remove/pop/clear. - Poprowadzenie (
tuple) — jak lista, ale niezmienny, w(): packing/unpacking, rozpakowywanie gwiazdek, krotka jednego elementu wymaga przecinka. - Wielu (
set) — wartości unikalne bez pozycji, w{}(ale{}bez zawartości — to dict, a nie set!): union/intersection/difference/symmetric_difference. - Słownik (
dict) to para klucz:wartość, która zachowuje kolejność wstawiania, dostęp według klucza, a nie pozycji. b = adla obiektów mutowalnych tworzy DRUGĄ NAZWĘ tego samego obiektu (aliasing), a nie kopię — dla kopii potrzebujesz.copy(), a dla struktur zagnieżdżonychcopy.deepcopy().- Tylko niezmienne typy są haszalne (i użyteczne jako klucze słownikowe lub elementy zbioru): liczby, łańcuch znaków, krotki zahaszowanych elementów frozenset.
- Generator Listy
[выражение for элемент in коллекция]— kompaktowa alternatywa dla pętli zappend(), ale nie zastępuje pętli tam, gdzie potrzebna jest bardziej złożona logika. - Wybór struktury danych to przede wszystkim pytanie o zadanie („czy potrzebny jest porządek?”, „czy potrzebne są unikalne wartości?”, „czy potrzebny jest klucz?”), a nie pytanie o składnię.