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í.

5. diel - Zoznamy v Pythone, ich základné funkcie a metódy

V predchádzajúcom cvičení, Riešené úlohy k 4. lekcii Pythone, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.

V minulej lekcii, Riešené úlohy k 4. lekcii Pythone , sme si ukázali, ako používať cykly v Pythone. V dnešnom tutoriálu sa pozrieme na zoznamy a tiež sa naučíme rôzne funkcie, ktoré možno aplikovať aj na iné kolekcie. O tých ale až neskôr.

Úvod do zoznamov

Predstavte si, že potrebujete uložiť nejaké hodnoty, napr. Zamestnanca nejakej firmy. A tých hodnôt je veľké množstvo (napr. 100 osôb). Vytvárať si na každú z nich premennou je hotové šialenstvo.

Zoznamy

Zoznam nám poskytuje spôsob, ako ukladať väčšie množstvo hodnôt prehľadne a na jedno miesto.

Vytváranie zoznamov

Zoznam sa vytvára za pomoci hranatých zátvoriek a jednotlivé prvky v ňom oddelíme čiarkou.

Príklad:

seznam_1 = []
seznam_2 = [1, 2, 3]
seznam_3 = ["a", "b", "c"]
seznam_4 = ["a", 1, "b", 2]

Zoznamy môžeme vytvárať aj za pomoci funkcií range() a list(). Funkcia range() vracia iterátor, ktorý je prevedený na zoznam pomocou funkcie list. O iterátory ale až niekedy inokedy :) Funkciu range() sme už preberali. Pre zopakovanie syntaxe:

  • range(n) - vráti čísla od nuly do n-1
  • range(m, n) - vráti čísla od m do n-1
  • range(m, n, i) - vráti čísla od m a každé ďalšie i-tej číslo do n-1

Pár takto vytvorených zoznamov:

seznam_1 = list() #prázdny zoznam
seznam_2 = list(range(3)) #[0, 1, 2]
seznam_3 = list(range(3, 7)) #[3, 4, 5, 6]
seznam_4 = list(range(1, 10, 2)) #[1, 3, 5, 7, 9]

Jednotlivé prvky

K jednotlivým prvkom zoznamu je možné pristupovať pomocou indexov. Číslovanie začína od nuly. Každý ďalší prvok má číslo väčšie o 1. To znamená, že prvý prvok má index 0, ďalší 1, ešte ďalšie má index 2 atď.

Zoznamy v Pythone – Indexy - Základné konštrukcie jazyka Python

V Pythone môžeme pre prístup k prvkom použiť aj záporné indexy. Tie sa číslujú odzadu. Teda posledný prvok má index -1, predposledný -2 atď. K prvkom sa pristupuje cez hranaté zátvorky.

seznam = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

print(seznam[0])
print(seznam[1])
print(seznam[5])
print(seznam[7])
print(seznam[-1])
print(seznam[-3])
Konzolová aplikácia
>>> seznam = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
>>> seznam[0]
2
>>> seznam[1]
3
>>> seznam[5]
13
>>> seznam[7]
19
>>> seznam[-1]
29
>>> seznam[-3]
19
>>>

Orezávanie

Zoznamy možno i orezávať. To znamená, že zo zoznamu získame jeho časť. Syntax je rovnaká, ako v predchádzajúcom prípade, až na to, že do hranaté zátvorky sa vloží aj koncový index, po prípadne i koľký prvok chceme.

Príklady:

seznam = list(range(10))
print(seznam)

print(seznam[0:5])
print(seznam[2:8])
print(seznam[1:7])
print(seznam[1:7:2])
print(seznam[2:9:2])
print(seznam[1:7:3])
Konzolová aplikácia
>>> seznam = list(range(10))
>>> seznam
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> seznam[0:5]
[0, 1, 2, 3, 4]
>>> seznam[2:8]
[2, 3, 4, 5, 6, 7]
>>> seznam[1:7]
[1, 2, 3, 4, 5, 6]
>>> seznam[1:7:2]
[1, 3, 5]
>>> seznam[2:9:2]
[2, 4, 6, 8]
>>> seznam[1:7:3]
[1, 4]
>>>

Syntax:

  • název_seznamu [m] - vyberie jediný prvok
  • název_seznamu [m:n] - vyberie prvky v rozsahu mn-1
  • název_seznamu [m:n:i] - vyberie m a každý i -Ty prvok do n-1

Jednotlivé argumenty určujúce čo chceme vybrať, možno aj vynechať. Môžeme teda napísať [::2], čo vám vyberie každý druhý prvok v zozname.

Pokiaľ nie je zadaný prvý prvok, berie sa od začiatku zoznamu (0). Ak nie je zadaný druhý prvok, berie sa koniec zoznamu. A ak nie je zadané o koľko prvkov chceme postupovať, berie sa to ako 1, teda sa vezme každý prvok v zadanom intervale.

Veľkosť zoznamu

Na zistenie veľkosti zoznamu (či iného iterovatelného objektu) máme k dispozícii funkciu len(). Tá vracia počet prvkov.

Príklad:

seznam = [1, 2, 3, "a", "b"]
print(len(seznam))

Prechádzanie zoznamu

Na prechádzanie zoznamu existujú tri spôsoby:

1) for.. in

Pomocou jednoduchého cyklu for..in získame jednotlivé prvky. Bohužiaľ je týmto spôsobom nemôžeme v prehliadaní zoznamu upravovať. Ale môžeme ich napríklad vytlačiť.

Syntax:

seznam = [1, 2, 3]
for prvek in seznam:
    print(prvek)

Pri prechode cyklom sa prvok zo zoznamu uloží do premennej prvok a my s ním môžeme niečo urobiť (napr. Vytlačiť ako v ukážke). Potom sa tento prvok "zahodí" a vezme sa ďalší prvok zo zoznamu.

2) Pomocou funkcie range()

Použijeme funkciu range(), len() a cyklus for..in.

Syntax:

seznam = [1, 2, 3]
for index in range(len(seznam)):
    seznam[index] = seznam[index] + 1
print(seznam)
for index in range(len(seznam)):
    seznam[index] = seznam[index] + 1 # všetky čísla v zozname zväčšíme o 1

Pozor! Ak chceme robiť to isté čo v ukážke, musí byť zoznam iba z čísel!

Funkcia len() nám vráti počet prvkov a tento počet si prevedieme na iterátor, ktorý nám vracia indexy od prvého prvku (0) do posledného komponentu (veľkosť zoznamu - 1). Potom k prvkom pristupujeme cez indexy.

3) Pomocou funkcie enumerate()

Funkcia enumerate() vracia index prvku aj jeho hodnotu. Za for nasleduje premenná i, do ktorej sa ukladá index prvku a ľubovoľná premenná, do ktorej sa ukladá hodnota prvku.

Syntax:

seznam = [1, 2, 3]
for i, prvek in enumerate(seznam):
    print(i, prvek)
print(seznam)

Týmto spôsobom získame ako prvok, tak i jeho index :)

Metódy

Metódy sa na rozdiel od funkcií název_funkce ( názov_objektu) Majú túto syntax: názov_objektu. název_metody ( parametre). Sú to teda funkcie, ktoré patrí nejakému objektu.

V tejto lekcii sa naučíme dve metódy - append() a pop().

append()

Metóda append() pripojí prvok na koniec zoznamu.

Príklad:

seznam = [1, 2]
seznam.append(3)
print(seznam)
seznam.append(5)
print(seznam)
seznam.append(8)
print(seznam)
seznam.append(13)
print(seznam)
seznam.append(21)
print(seznam)
seznam.append(34)
print(seznam)
Konzolová aplikácia
>>> seznam = [1, 2]
>>> seznam.appendlt;3>
>>> seznam
[1, 2, 3]
>>> seznam.appendlt;5>
>>> seznam
[1, 2, 3, 5]
>>> seznam.appendlt;8>
>>> seznam
[1, 2, 3, 5, 8]
>>> seznam.appendlt;13>
>>> seznam
[1, 2, 3, 5, 8, 13]
>>> seznam.appendlt;21>
>>> seznam
[1, 2, 3, 5, 8, 13, 21]
>>> seznam.appendlt;34>
>>> seznam
[1, 2, 3, 5, 8, 13, 21, 34]
>>>

pop()

Metóda pop() vráti a odstráni posledný prvok zo zoznamu.

Príklad:

seznam = [1, 2, 3, 5, 8, 13, 21, 34]
seznam.pop()
print(seznam)
seznam.pop()
print(seznam)
promenna = seznam.pop()
print(promenna)
print(seznam)
seznam.pop()
print(seznam)
Konzolová aplikácia
>>> seznam = [1, 2, 3, 5, 8, 13, 21, 34]
>>> seznam.pop()
34
>>> seznam
[1, 2, 3, 5, 8, 13, 21]
>>> seznam.pop()
21
>>> seznam
[1, 2, 3, 5, 8, 13]
>>> promenna = seznam.pop()
>>> promenna
13
>>> seznam
[1, 2, 3, 5, 8]
>>> seznam.pop()
8
>>> seznam
[1, 2, 3, 5]
>>>

Funkcie

Všetky tieto funkcie sa dajú použiť aj na iné iterovatelné objekty, než je zoznam.

len()

Vráti počet prvkov iterovatelného objektu.

Príklad:

seznam = [1, 3, 2, 0, 5]
print(len(seznam))

min()

Vráti z iterovatelného objektu prvok s najmenšou hodnotou.

seznam = [1, 3, 2, 0, 5]
print(min(seznam))

max()

Vráti z iterovatelného objektu prvok s najväčšou hodnotou.

seznam = [1, 3, 2, 0, 5]
print(max(seznam))

sum()

Vráti súčet prvkov v iterovatelném objektu.

seznam = [1, 3, 2, 0, 5]
print(sum(seznam))

sorted()

Zoradia prvky v iterovatelném objektu.

seznam = [1, 3, 2, 0, 5]
print(sorted(seznam))

Možno tiež použiť metódu zoznamu sort (), ktorá zoznam rovno zoradia, pretože funkcia sorted() vracia iba jeho zoradenú kópiu a zoznam zostáva nezmenený.

all()

Vráti boolean True, ak sa všetky prvky v iterovatelném objekte vyhodnotí na True, inak vráti False.

seznam_1 = [1, 3, 2, 0, 5]
seznam_2 = [6, 4, 5, 1, 2]
print(all(seznam_1))
print(all(seznam_2))

any()

Vráti boolean True, ak sa aspoň jeden prvok v iterovatelném objekte vyhodnotí na True, inak vráti False.

seznam_1 = [1, 3, 2, 0, 5]
seznam_2 = [6, 4, 5, 1, 2]
seznam_3 = []
print(any(seznam_1))
print(any(seznam_2))
print(any(seznam_3))

del()

Pomocou del() možno jednotlivé prvky zo zoznamu mazať za pomoci rezu. Príklad:

seznam = [1, 3, 2, 0, 5]
del(seznam[1])
print(seznam)
del(seznam[1:3])
print(seznam)

A to je pre tento diel všetko :)

V budúcej lekcii, Riešené úlohy k 5. lekcii Pythone , nás čakajú reťazca v Pythone.

V nasledujúcom cvičení, Riešené úlohy k 5. lekcii Pythone, si precvičíme nadobudnuté skúsenosti z predchádzajúcich lekcií.


 

Predchádzajúci článok
Riešené úlohy k 4. lekcii Pythone
Všetky články v sekcii
Základné konštrukcie jazyka Python
Preskočiť článok
(neodporúčame)
Riešené úlohy k 5. lekcii Pythone
Článok pre vás napísal gcx11
Avatar
Užívateľské hodnotenie:
12 hlasov
(^_^)
Aktivity