IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

1. diel - Kolekcia v Pythone - n-tica a zoznamy

Vitajte u prvej dielu o kolekciách v Pythone. V tomto dieli prehĺbime naše znalosti o zoznamoch a naučíme sa používať n-tica.

N-tica

Vytváranie n-tic

N-tica je dátový typ, ktorý uchováva svoje prvky v určitom poradí. Vytvára sa nasledovne:

prazdna = ()
prazdna_2 = tuple()
jina = (1, 2, 3)
jina_2 = tuple(range(3))

N-ticu vytvoríme tak, že jej prvky dáme do okrúhlych zátvoriek a jednotlivé prvky oddelíme čiarkou. Výraz tuple () vie previesť aj iné dátové typy na n-tica (pokiaľ to dá), napríklad výsledok funkcie range ().

Range () a Zip ()

N-tica môžeme vytvárať aj za pomoci range () a zips (). Vytvoríme si napríklad n-ticu s nepárnymi číslami:

licha = tuple(range(1, 10, 2))
suda = tuple(range(0, 10, 2))

Ak vypíšeme n-tica, uvidíme toto:

n-tica v Pythone - Kolekcia v Pythone

Pomocou funkcie zip () sa dajú vytvárať n-tica, ktoré obsahujú iné n-tica, z viac iterátory funkcie range (). Znie to zložito, tak si ukážeme príklad:

Funkcia zips v Pythone - Kolekcia v Pythone

Tu sa vytvorila n-tice obsahujúce iba dve n-tica. Počet vnorených n-tic je daný najmenším počtom prvkov, ktoré vracia jedna z funkcií range () - v tomto prípade druhú, pretože:

prvý vráti - 1, 2, 3, 4

druhá vráti - 2, 5

tretí vráti - 1, 3, 5

Najmenší je druhá - teda z každej sa vezmú prvé dva prvky a vznikne (1, 2, 1) a (2, 5, 3).

Toto je všetko k funkcii zips () a range ().

Operátormi

Ako prvý si ukážeme, že n-tica možné spájať (+), replikovať (*) a testovať či ak v nich je (nie je) nejaký prvok. V nasledujúcom príklade si vytvoríme dve n-tica, jednu s nepárnymi a druhou sa párnymi číslicami. Obe potom spojíme.

Zlučovanie kolekcií v Pythone - Kolekcia v Pythone

Množiny môžeme aj replikovať, čo znamená že je "rozmnožím":

>>> cisla = tuple(1, 2, 3)
>>> cisla * 3
(1, 2, 3, 1, 2, 3, 1, 2, 3)

Navyše môžeme zistiť, či daný prvok je (nie je) v n-ticu:

>>> cisla = tuple(1, 2, 3)
>>> 1 in cisla
True
>>> 4 in cisla
False
>>> 2 not in cisla
False
>>> 5 not in cisla
True

Orezávanie n-tice a funkcie ľan ()

Z n-tica možno extrahovať len určitú časť n-tica. Napr. budeme potrebovať len prvé dva prvky. Ako na to?

Každý prvok v n-ticu má svoje poradové číslo (miesto, kde je uložený - index). Prvý prvok má číslo 0, ďalší 1 atď. Prvok v n-ticu zistíme takto - názov n-tica [číslo prvku] - napr. N_tice [1] - prvok na druhom mieste.

Príklad:

Entice v Pythone - Kolekcia v Pythone

Počet prvkov v n-ticu zistíme funkcií ľan (). Keďže indexovanie začína od nuly, tak posledný prvok má číslo ľan (názov n-tice) - 1. Funkcia ľan nám vracia celé číslo označujúce počet prvkov.

A ďalší príklad:

Kolekcia v Pythone - Kolekcia v Pythone

Prvky z n-tica môžeme aj dostať zápornými indexy. Pri záporných indexoch "jede" číslovanie odzadu dopredu. Teda posledný prvok má index -1, predposledný -2 a tak ďalej a prvý prvok má index -len (názov n-tica).

Príklad:

Kolekcia v Pythone - Kolekcia v Pythone

V príklade som vytvoril n-tice za pomoci funkcie range () :) Orezávanie ([]) môžeme použiť aj trochu lepšie. Predstavte si, že by ste potrebovali z n-tica dostať všetky prvky od prvého do tretieho (od indexu 0 do indexu 2). Syntax orezávanie je podobná syntax funkcia range ():

  • n-tica [m] - vráti z n-tica prvok s indexom m
  • n-tica [m: n] - vráti z n-tica prvky s indexmi od m do n-1
  • n-tica [m: n: i] - vráti z n-tica prvky s indexmi od m a každý ďalší i-ty prvok až do n

m, n a i možno i vynechať. V tom prípade je možné napr. [:] Vrátiť všetky prvky.

Teraz pár príkladov pre prehľadnosť:

Príklady na kolekcie v Pythone - Kolekcia v Pythone

N-tica možno aj porovnávať pomocou porovnávacích operátorov (pozri 3. lekcie), avšak dátové typy v n-ticu musia byť medzi sebou porovnateľné. Porovnávanie prebieha medzi jednotlivými prvkami, ako je jeden z prvkov na rovnakej indexové pozícii väčšie (alebo menšie). Táto n-tice je potom väčšia (alebo menšie).

Metódy

Metódy sa používajú tak, že na napíšete: n-tice.metoda (parameter) :) N-tica majú dve metódy: count () a index (). Metóda count (prvok) vracia počet prvkov v n-ticu a metóda index (prvok) vracia najnižšiu nezáporný index, ktorý obsahuje prvok.

Príklad:

n-tica v Pythone - Kolekcia v Pythone

Toť všetko k n-ciám :) Prichádzajú zoznamy.

Zoznamy

Na zoznamy môžeme použiť všetko, čo je uvedené vyššie a navyše aj ďalšie funkcie i metódy. Zoznamy sa totiž od n-tic líšia v tom, že na ich koniec možno pridávať prvky, keďže zoznamy nemajú, na rozdiel od n-tic, pevne danú veľkosť. Prvky v zozname môžeme pridávať, mazať i prepisovať. Zoznam sa v Pythone vytvorí použitím hranatých zátvoriek. Tiež možno previesť iný dátový typ (ak to možno) na zoznam funkcií list ().

Teraz si ukážeme pár príkladov:

prazdny = []
prazdny_2 = list()
jiny = [1, 2, 3]
jiny_2 = list(range(3))

Prepisovanie prvkov zoznamu sa vykonáva touto syntaxou - názov zoznamu [prvok] = iný prvok.

Príklad:

Zoznamy v Pythone - Kolekcia v Pythone

Na konci sme do zoznamu vložili iný zoznam :) S prvky zoznamu, môžeme pracovať aj pomocou cyklov. Napr ak chceme vytlačiť jednotlivé prvky zoznamu:

for prvek in seznam:
    print(prvek)

Ak chceme ale postupne prechádzať zoznam as prvkami niečo robiť, je lepšie syntax:

for index in range(len(seznam)):
    seznam[index] = #zde s jednotlivými prvky děláme, co potřebujeme

Príklad - máme pole o rôznych hodnotách a chceme zväčšiť hodnoty napr. O 1:

seznam = [1, 5, 2, 4, 6, 3]
for index in range(len(seznam)):
    seznam[index] = seznam[index] + 1

A výsledok je [2, 6, 3, 5, 7, 4] :)

Metódy

Na zozname je možné vykonávať metódy count (prvok) a index (prvok) a mnoho ďalších, ktoré si ukážeme:

Append (prvok)

Pripojí na koniec zoznamu prvok.

Clear ()

Zmaže všetky prvky v zozname.

Copy ()

Vytvorí hlbokú kópiu zoznamu. Ak napríklad vytvoríte nový zoznam tým, že na neho odkážete operátorom = (plytká kópie), tak sa skopíruje iba odkaz na objekt. To v praxi znamená, že ak pôvodné zoznam zmeníte, zmení sa aj novo vytvorený zoznam. Premenné - hoci majú iný názov vlastne ukazujú na to isté :) Touto metódou vytvoríte hlbokú kópiu a teda ak zmeníte pôvodné zoznam, tak skopírovaný sa vôbec nezmení.

Extend ()

Pripojí všetky prvky z iterovatelného objektu (zoznam, n-tice a pod.) Na koniec zoznamu.

Insert (pozícia, prvok)

Vloží prvok na danú pozíciu.

Pop (pozícia)

Vráti hodnotu prvku na danej pozícii a zároveň prvok zo zoznamu odstráni. Ak nie je pozícia zadaná, vráti hodnotu a zároveň odstráni posledný prvok.

Remove (prvok)

Odstráni prvý výskyt prvku zo zoznamu.

Reverse ()

Prevráti poradie prvkov v zozname. Prvý prvok bude posledný, druhý predposledný ... a posledný bude prvý.

Sort ()

Bez argumentov zoradia prvky, ktoré musia byť porovnateľné vzostupne. Táto metóda prijíma dva argumenty: key (funkcia, cez ktorú sa prvky "preženú" a potom sa porovnajú) a reversed (ak je nastavené na hodnotu True, tak sa zoznam zoradí zostupne). Rovnaké kľúčové argumenty má aj funkcia sorted ().

Zoznamové komprehence

Používajú sa pre rýchlejšie vytváranie kolekcií. Majú tieto syntaxe:

[výraz for prvek in iterovatelný_objekt]

Vytvorí nový zoznam tvorený výrazy.

[výraz for prvek in iterovatelný_objekt if podmínka]

Vytvorí nový zoznam tvorený výrazy. Ak je pre daný výraz splnená podmienka, tak bude výraz v zozname.

Príklady:

Zoznamové komprehence v Pythone - Kolekcia v Pythone
V ďalšom diele o kolekciách si ukážeme prácu s množinami.

 

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 93x (3.53 MB)

 

Všetky články v sekcii
Kolekcia v Pythone
Článok pre vás napísal gcx11
Avatar
Užívateľské hodnotenie:
2 hlasov
(^_^)
Aktivity