Lekce 1 - Úvod do kolekcí v Pythonu
Vítejte v první lekci kurzu, ve kterém se budeme věnovat kolekcím v Pythonu. Ty jsou v Pythonu velmi důležité, jelikož se Python často používá pro zpracování dat a datovou vědu. Představíme si různé typy kolekcí, rozdíly mezi nimi a kdy jakou kolekci použít. Budeme se věnovat i pokročilejším tématům, jako jsou iterátory nebo seznamové komprehence.
Minimální požadavky
Pro tento kurz je nutné ovládat Základní konstrukce jazyka Python a Objektově orientované programování v Pythonu.
Kolekce v Pythonu
V Pythonu se často setkáváme s potřebou pracovat s větším množstvím
dat. Ať už vyvíjíme webovou aplikaci, analyzujeme data v knihovně pandas
,
zpracováváme výstupy z API nebo
testujeme software, potřebujeme mít po ruce
struktury, které umí uchovávat více hodnot najednou. Těmto strukturám
říkáme kolekce. Právě díky nim je Python tak oblíbený
například v datové vědě, kde pracujeme s obrovským
množstvím informací a potřebujeme s nimi efektivně manipulovat.
Co je to kolekce?
Kolekce je obecné označení pro datový typ, který umožňuje ukládat více hodnot. Např. tedy obyčejná proměnná obsahující seznamem je kolekcí:
ovoce = ["jablko", "banán", "hruška"]
Proměnná ovoce
výše obsahuje tři textové hodnoty, které
můžeme procházet nebo upravovat. Kolekci si můžeme představit jako
krabičku, do které uložíme víc věcí najednou – třeba odpovědi
uživatelů, produkty v e-shopu, položky z databáze nebo celou tabulku
dat.
Typy kolekcí v Pythonu
Možná se ptáte: "Proč nestačí jen seznam?" Pokud máme málo dat,
většinou je jedno, jakou kolekci použijeme. V praxi ale není výjimkou
pracovat s databázemi o stovkách tisících uživatelů, milionů
pojištěnců nebo recenzí. Takové úlohy vyžadují efektivní přístupy. U
většího množství dat je totiž velmi důležité, jak
rychle s nimi umíme pracovat. Uživatel nechce čekat 10 minut, než
mu vyhledáme zahradní sekačky, pokud máme na e-shopu 3 miliony produktů
Představme si, že máme kolekci milionů uživatelů, které často vyhledáváme podle rodného čísla:
- Když je uložíme do seznamu, musíme projít celý seznam, abychom našli uživatele podle rodného čísla.
- Když je uložíme do slovníku, což je kolekce, která přistupuje k prvkům pomocí klíče, nikoli číselného indexu, a klíčem bude rodné číslo, získáme hledaného uživatele téměř okamžitě.
Příklad výše vůbec neznamená, že by byl slovník lepší, než seznam. Pouze, že některé úlohy umí zpracovat rychleji. Naopak seznam je lepší pro zachování pořadí prvků, což slovník neumí.
Každý typ kolekce se tedy proto hodí pro jiný účel.
Kdy jakou kolekci použít?
Python nabízí tyto základní typy kolekcí:
- Seznam (
list
) – Uchovává hodnoty v daném pořadí, jednotlivé prvky lze měnit, přidávat i mazat. - N-tice (
tuple
) – Funguje jako seznam, ale pořadí hodnot nemůžeme měnit, vhodné pro pevná data jako souřadnice nebo konstantní nastavení. - Množina (
set
) – Neuchovává pořadí, ale zaručuje, že každý prvek je v kolekci jen jednou. - Slovník (
dict
) – Umožňuje přiřazovat hodnoty ke klíčům, například jméno → telefonní číslo a rychle k nim tak přistupovat.
Typ | Uspořádaný | Měnitelný | Unikátní prvky | Příklad použití |
---|---|---|---|---|
Seznam | Ano | Ano | Ne | Výsledky z API, záznamy v tabulce |
N-tice | Ano | Ne | Ne | Souřadnice GPS, konfigurace |
Množina | Ne | Ano | Ano | Unikátní ID, tagy bez opakování |
Slovník | Ano (klíče) | Ano | Klíče ano | Slovník pro překlady, databáze |
Modul collections
Python má dále speciální modul collections
, který nabízí
rozšířené kolekce jako:
deque
– Rychlá fronta/zásobníkCounter
– Spočítá výskyty hodnotdefaultdict
– Slovník s výchozí hodnotouOrderedDict
– Slovník, který uchovává pořadí vkládaných prvků
Těmito pokročilými kolekcemi se budeme zabývat v pozdějších lekcích kurzu.
Další knihovny
Jakmile zvládneme základní kolekce, můžeme přejít na jejich výkonné nástavby – knihovny NumPy a pandas. Ty se často používají při zpracování větších datových souborů, například v oblasti datové vědy, strojového učení nebo statistiky:
- Knihovna
NumPy
nabízí strukturu zvanou pole (array), která je podobná seznamům, ale pracuje mnohem rychleji a umožňuje další operace (např. sčítání všech prvků najednou) - Knihovna
pandas
je postavena nadNumPy
a přidává další vrstvy – například tabulková data jako v Excelu.
Na čem kolekce staví?
Každá kolekce v Pythonu je objekt. To znamená, že má
své metody – speciální funkce, které můžeme volat,
abychom s kolekcí pracovali. Z kurzu objektově
orientovaného programování již tyto pojmy známe. Například kód
níže vytvoří seznam se dvěma položkami a pak do něj metodou
append()
přidá třetí položku:
ovoce = ["jablko", "pomeranč"] ovoce.append("banán")
V dalších lekcích tohoto kurzu si jednotlivé metody pro každou kolekci ukážeme podrobněji a naučíme se je správně používat.
Praktické využití kolekcí v Pythonu
Využití kolekcí je tedy velmi široké. Mohou být použity pro různé úkoly a aplikace, jako například:
- práce s databází: slovníky a seznamy jsou často používány pro ukládání a práci s daty z databáze,
- zpracování textu: seznamy a tuple jsou často používány pro práci s textem, například pro rozdělení textu na slova nebo procházení textu po řádcích,
- matematické operace: množiny jsou často používány pro matematické operace, jako je například práce s množinou unikátních hodnot nebo sjednocení nebo rozdíl množin,
- webové aplikace: slovníky a seznamy jsou často používány pro práci s daty z webových aplikací, jako jsou například JSON nebo XML soubory,
- algoritmy: Seznamy a tuple jsou často používány pro implementaci různých algoritmů, jako jsou například prohledávání nebo řazení.
V každém případě volba kolekce závisí na konkrétním úkolu a na tom, jakým způsobem chceme data manipulovat. Je důležité si uvědomit vlastnosti jednotlivých kolekcí a vybrat tu nejvhodnější pro daný úkol.
V příští lekci, Tuples, množiny a slovníky v Pythonu, se podíváme na tuples, množiny a slovníky.