1. diel - Úvod do kolekcií v Pythone
Vitajte v prvej lekcii kurzu, v ktorom sa budeme venovať kolekciám v Pythone. Tie sú v Pythone veľmi dôležité, keďže sa Python často používa na spracovanie dát a dátovú vedu. Predstavíme si rôzne typy kolekcií, rozdiely medzi nimi a kedy ktorú kolekciu použiť. Budeme sa venovať aj pokročilejším témam, ako sú iterátory alebo zoznamové komprehencie.
Minimálne požiadavky
Pre tento kurz je potrebné ovládať Základné konštrukcie jazyka Python a Objektovo orientované programovanie v Pythone.
Kolekcie v Pythone
V Pythone sa budeme stretávať s potrebou pracovať s väčším množstvom
dát. Keď sa dostaneme do nadväzujúcich kurzov, budeme vyvíjať webovú aplikáciu, analyzovať dáta v knižnici pandas,
spracovávať výstupy z API
(webového rozhrania na sťahovanie/nahrávanie dát) alebo napríklad testovať softvér. A na to budeme potrebovať po
ruke štruktúry, ktoré vedia uchovávať viac hodnôt naraz. Týmto
štruktúram hovoríme kolekcie. Práve vďaka nim je Python
tak obľúbený napríklad v dátovej vede, kde pracujeme s
obrovským množstvom informácií a potrebujeme s nimi efektívne
manipulovať.
Čo je to kolekcia?
Kolekcia je všeobecné označenie pre dátový typ, ktorý umožňuje ukladať viac hodnôt. Napr. teda obyčajná premenná obsahujúca zoznam je kolekciou:
fruits = ["apple", "banana", "pear"]
Premenná fruits vyššie obsahuje tri textové hodnoty, ktoré
môžeme prechádzať alebo upravovať. Kolekciu si môžeme predstaviť ako
krabičku, do ktorej uložíme viac vecí naraz – napríklad odpovede
používateľov, produkty v e-shope, položky z databázy alebo celú tabuľku
dát.
Typy kolekcií v Pythone
Možno sa pýtate: "Prečo nestačí len zoznam?" Ak máme málo dát,
väčšinou je jedno, ktorú kolekciu použijeme. V praxi však nie je výnimkou
pracovať s databázami o stovkách tisíc používateľov, miliónoch
poistencov alebo recenzií. Takéto úlohy vyžadujú efektívne prístupy. Pri
väčšom množstve dát je totiž veľmi dôležité, ako
rýchlo s nimi vieme pracovať. Používateľ nechce čakať 10 minút,
kým mu vyhľadáme záhradné kosačky, ak máme na e-shope 3 milióny
produktov 
Predstavme si, že máme kolekciu miliónov používateľov, ktorých často vyhľadávame podľa rodného čísla:
- Keď ich uložíme do zoznamu, musíme prejsť celý zoznam, aby sme našli používateľa podľa rodného čísla.
- Keď ich uložíme do slovníka, čo je kolekcia, ktorá pristupuje k prvkom pomocou kľúča, nie číselného indexu, a kľúčom bude rodné číslo, získame hľadaného používateľa takmer okamžite.
Príklad vyššie vôbec neznamená, že by bol slovník lepší než zoznam. Len že niektoré úlohy vie spracovať rýchlejšie. Naopak zoznam je lepší pre zachovanie poradia prvkov, čo slovník nevie.
Každý typ kolekcie sa teda hodí na iný účel.
Kedy ktorú kolekciu použiť?
Python ponúka tieto základné typy kolekcií:
- Zoznam (
list) – Uchováva hodnoty v danom poradí, jednotlivé prvky je možné meniť, pridávať aj mazať. - N-tica (
tuple) – Funguje ako zoznam, ale poradie hodnôt nemôžeme meniť, vhodné pre pevné dáta ako súradnice alebo konštantné nastavenia. - Množina (
set) – Neuchováva poradie, ale zaručuje, že každý prvok je v kolekcii len raz. - Slovník (
dict) – Umožňuje priraďovať hodnoty ku kľúčom, napríklad meno → telefónne číslo a rýchlo k nim tak pristupovať.
| Typ | Usporiadané | Meniteľné | Unikátne prvky | Príklad použitia |
|---|---|---|---|---|
| Zoznam | Áno | Áno | Nie | Výsledky z API, záznamy v tabuľke |
| N-tica | Áno | Nie | Nie | Súradnice GPS, konfigurácia |
| Množina | Nie | Áno | Áno | Unikátne ID, tagy bez opakovania |
| Slovník | Áno (kľúče) | Áno | Kľúče áno | Slovník pre preklady, databáza |
Modul collections
Python má ďalej špeciálny modul collections, ktorý ponúka
rozšírené kolekcie ako:
deque– Rýchla fronta/zásobníkCounter– Spočíta výskyty hodnôtdefaultdict– Slovník s predvolenou hodnotouOrderedDict– Slovník, ktorý uchováva poradie vkladaných prvkov
Týmito pokročilými kolekciami sa budeme zaoberať v neskorších lekciách kurzu.
Ďalšie knižnice
Akonáhle zvládneme základné kolekcie, môžeme prejsť na ich výkonné nadstavby – knižnice NumPy a pandas. Tie sa často používajú pri spracovaní väčších dátových súborov, napríklad v oblasti dátovej vedy, strojového učenia alebo štatistiky:
- Knižnica
NumPyponúka štruktúru zvanú pole (array), ktorá je podobná zoznamom, ale pracuje omnoho rýchlejšie a umožňuje ďalšie operácie (napr. sčítanie všetkých prvkov naraz) - Knižnica
pandasje postavená nadNumPya pridáva ďalšie vrstvy – napríklad tabuľkové dáta ako v Exceli.
Na čom kolekcie stoja?
Každá kolekcia v Pythone je objekt. To znamená, že má
svoje metódy – špeciálne funkcie, ktoré môžeme volať,
aby sme s kolekciou pracovali. Z kurzu objektovo
orientovaného programovania už tieto pojmy poznáme. Napríklad kód
nižšie vytvorí zoznam s dvoma položkami a potom do neho metódou
append() pridá tretiu položku:
fruits = ["apple", "orange"] fruits.append("banana")
V nasledujúcich lekciách tohto kurzu si jednotlivé metódy pre každú kolekciu ukážeme podrobnejšie a naučíme sa ich správne používať.
Praktické využitie kolekcií v Pythone
Využitie kolekcií je teda veľmi široké. Môžu byť použité pre rôzne úlohy a aplikácie, ako napríklad:
- práca s databázou: slovníky a zoznamy sa často používajú na ukladanie a prácu s dátami z databázy,
- spracovanie textu: zoznamy a tuple sa často používajú pri práci s textom, napríklad na rozdelenie textu na slová alebo prechádzanie textu po riadkoch,
- matematické operácie: množiny sa často používajú na matematické operácie, ako je práca s množinou unikátnych hodnôt alebo zjednotenie či rozdiel množín,
- webové aplikácie: slovníky a zoznamy sa často používajú na prácu s dátami z webových aplikácií, ako sú JSON alebo XML súbory,
- algoritmy: zoznamy a tuple sa často používajú na implementáciu rôznych algoritmov, ako sú prehľadávanie alebo zoradenie.
V každom prípade výber kolekcie závisí od konkrétnej úlohy a od toho, ako chceme dáta spravovať. Je dôležité si uvedomiť vlastnosti jednotlivých kolekcií a vybrať tú najvhodnejšiu pre danú úlohu.
V nasledujúcej lekcii, Tuples a množiny v Pythone, sa pozrieme na tuples a množiny.
