Typy złożone w Pythonie – listy, krotki, słowniki i zbiory

Kacper Sieradziński
Kacper Sieradziński
20 marca 2025Edukacja4 min czytania

W poprzednich rozdziałach poznałeś proste typy danych — liczby, teksty i wartości logiczne. To wystarczy, aby pisać pierwsze programy, ale szybko zauważysz, że realne problemy wymagają pracy z wieloma danymi naraz. Nie wystarczy jedna liczba czy jeden napis — potrzebujesz struktur, które potrafią przechowywać całe kolekcje wartości i pozwalają je przetwarzać w sposób elastyczny i logiczny.

Obraz główny Typy złożone w Pythonie – listy, krotki, słowniki i zbiory

Właśnie do tego służą typy złożone: listy, krotki, słowniki i zbiory. Każdy z nich ma swoje zastosowanie i charakter. Zrozumienie różnic między nimi to kluczowy krok w nauce Pythona.

Listy – elastyczne kolekcje danych

Lista to uporządkowany zbiór elementów, które mogą mieć różne typy. Możesz w niej przechowywać liczby, teksty, a nawet inne listy. Listy tworzy się za pomocą nawiasów kwadratowych [].

Python
1 2 owoce = ["jabłko", "banan", "wiśnia"] print(owoce)

Dostęp do elementów

Indeksy zaczynają się od zera:

Python
1 2 print(owoce[0])# jabłko print(owoce[2])# wiśnia

Możesz też pobrać element od końca:

Python
1 print(owoce[-1])# wiśnia

Modyfikacja listy

Listy są mutowalne, co oznacza, że można je zmieniać:

Python
1 2 owoce[1] = "gruszka" print(owoce)

Dodawanie i usuwanie elementów

Python
1 2 3 4 owoce.append("śliwka")# dodanie na końcu owoce.insert(1, "malina") # wstawienie na konkretną pozycję owoce.remove("jabłko")# usunięcie po wartości del owoce[0]# usunięcie po indeksie

Długość listy

Python
1 print(len(owoce))

Kopiowanie list

Błąd początkujących to przypisanie jednej listy do drugiej — wtedy obie wskazują na ten sam obiekt:

Python
1 2 3 4 a = [1, 2, 3] b = a b.append(4) print(a)# [1, 2, 3, 4] — obie zmienne odnoszą się do tej samej listy

Aby skopiować listę, użyj copy() lub [:]:

Python
1 2 3 4 b = a.copy() b.append(5) print(a)# [1, 2, 3, 4] print(b)# [1, 2, 3, 4, 5]

Krotki (tuples) – dane niezmienne

Krotka (tuple) wygląda jak lista, ale jest niemutowalna — nie można zmienić jej elementów po utworzeniu. Tworzy się ją za pomocą nawiasów okrągłych ().

Python
1 2 wspolrzedne = (10, 20) print(wspolrzedne[0])# 10

Próba zmiany:

Python
1 wspolrzedne[0] = 30# błąd!

Dlaczego krotki istnieją?

  • szybsze od list,
  • można je używać jako klucze w słownikach,
  • dobrze opisują dane, które nie powinny się zmieniać (np. współrzędne punktu, daty, rozmiary).

Krotka jednoelementowa

Aby Python rozpoznał jednoelementową krotkę, musi mieć przecinek:

Python
1 2 x = (5,) print(type(x))# <class 'tuple'>

Bez przecinka x = (5) to po prostu liczba w nawiasie.

Słowniki – dane opisane kluczami

Słownik (ang. dictionary) przechowuje dane w parach klucz → wartość. Tworzy się go za pomocą klamerek {}.

Python
1 2 osoba = {"imie": "Kacper", "wiek": 30, "miasto": "Warszawa"} print(osoba["imie"])

Dodawanie i zmiana wartości

Python
1 2 3 osoba["zawod"] = "programista" osoba["wiek"] = 31 print(osoba)

Usuwanie elementów

Python
1 2 del osoba["miasto"] print(osoba)

Iteracja po słowniku

Python
1 2 for klucz, wartosc in osoba.items(): print(klucz, "→", wartosc)

Sprawdzanie klucza

Python
1 2 if "imie" in osoba: print("Znam imię!")

Słowniki są niezwykle przydatne, gdy dane mają strukturę opisową, np. dane użytkownika, konfigurację, wyniki API.

Zbiory – unikalne elementy

Zbiór (ang. set) to kolekcja nieuporządkowanych i niepowtarzalnych elementów. Tworzy się go za pomocą {} lub funkcji set().

Python
1 2 kolory = {"czerwony", "zielony", "niebieski"} print(kolory)

Automatyczne usuwanie duplikatów

Python
1 2 kolory = {"zielony", "zielony", "niebieski"} print(kolory)# {'zielony', 'niebieski'}

Operacje na zbiorach

Zbiory pozwalają wykonywać operacje matematyczne:

Python
1 2 3 4 5 6 7 A = {1, 2, 3, 4} B = {3, 4, 5, 6} print(A | B)# suma print(A & B)# część wspólna print(A - B)# różnica print(A ^ B)# różnica symetryczna

Zastosowania zbiorów

  • usuwanie duplikatów z list,
  • porównywanie zbiorów danych,
  • szybkie sprawdzanie przynależności (in działa bardzo wydajnie).

Kiedy używać którego typu?

TypZmiennośćKolejnośćKluczeUnikalnośćPrzykładowe użycie
listTakTakNie Nie Kolekcja danych w określonej kolejności
tupleNie TakNie Nie Stałe dane (np. współrzędne)
dictTakTak (od Pythona 3.7)TakTakDane opisowe, konfiguracje
setTakNie Nie TakZbiory unikalnych wartości

Praktyczny przykład

Załóżmy, że masz dane o studentach w postaci słownika, gdzie każdy klucz to imię, a wartość to lista ocen. Chcesz policzyć średnią dla każdego z nich.

Python
1 2 3 4 5 6 7 8 9 studenci = { "Kasia": [5, 4, 5, 3], "Tomek": [4, 4, 4], "Ania": [5, 5, 5, 5] } for imie, oceny in studenci.items(): srednia = sum(oceny) / len(oceny) print(imie, "→", round(srednia, 2))

Dzięki połączeniu słowników i list możesz reprezentować złożone dane w sposób logiczny, czytelny i elastyczny.

Podsumowanie

Typy złożone w Pythonie to narzędzia, które pozwalają grupować, organizować i przetwarzać dane w złożony sposób. W praktyce programista korzysta z nich non stop — od prostych list po zagnieżdżone struktury danych, które opisują całe systemy.

  • Poznałeś listy — elastyczne, dynamiczne, do ogólnego użytku.
  • Zrozumiałeś krotki — szybkie i bezpieczne, gdy dane nie mają się zmieniać.
  • Opanowałeś słowniki — idealne do opisu i mapowania danych.
  • Nauczyłeś się zbiorów — do pracy z unikalnymi wartościami i operacjami matematycznymi.

Zrozumienie tych struktur to klucz do pisania programów, które nie tylko działają, ale są czyste, logiczne i skalowalne. Wiedza o różnicach między typami i ich zastosowaniach pozwala wybrać odpowiednią strukturę dla każdego problemu.

Następny krok: wyrażenia listowe (list comprehensions), słownikowe i zbiórów, które ułatwiają tworzenie i przekształcanie kolekcji w elegancki sposób.