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
Otwórz praktykę →

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
Pełną wersję tej Mapy Wyboru można znaleźć w §11.22

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 = a dla obiektów mutowalnych tworzy DRUGĄ NAZWĘ tego samego obiektu (aliasing), a nie kopię — dla kopii potrzebujesz .copy(), a dla struktur zagnieżdżonych copy.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 z append(), 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ę.