Listy - úvod

Prestavte si, že na vstupe nedostaneme zopár čísel, ale niekoľko desiatok. Kam by sme tieto čísla uložili? Mohli by sme si vytvoriť desiatky premenných a vstup naukladať do nich. To by však nebolo veľmi prehľadné; a navyše čo ak by bol počet čísel na vstupe premenlivý? (Napríklad prvé číslo vstupu by určovalo koľko čísel bude nasledovať)

Pre takýto prípad musíme rozšíriť náš arzenál o list. List deklaruje naraz množstvo premenných uložených za sebou, ku ktorým sa dá pristupovať pomocou ich pozície.

# List obsahujuci cisla 1 az 5
cisla = [1, 2, 3, 4, 5]

# Vypisanie prveho prvku pola "cisla".
print(cisla[0])
# Vystup: 1

# Chyba!
print(cisla[5])
# IndexError: list index out of range
# Python nam hovori, ze index 5 je mimo povoleny rozsah (index out of range)
# Pole "cisla" ma 5 prvkov indexovanych od 0, takze posledny platny index je 4, index 5 je neplatny.

Ako ukazuje príklad vyššie, vytvorenie listu má formát [<hodn1>, <hodn2>, ...], kde hodnota môže byť ľubovoľná premenná alebo hodnota (literál). Listy sú číslované od 0. Ak preto vytvoríme reťazec dĺžky 5 ako v príklade vyššie, platné indexy (pozície) sú 04.

List si tiež môžete predstaviť veľa krabičiek vedľa seba, ku ktorým pristupujeme menom listu a zároveň pozíciou. Pritom krabičky na sebe nijako nezávisia a môžu obsahovať rôzne hodnoty a dokonca, ako ukazuje list z obrázku, aj rôzne typy. V liste z obrázka je na pozíciách 0, 3 string, na pozíciách 1, 2 int, atď.

Ukážka 6-prvkového listu spolu s indexami.

Na koniec listov často potrebujeme pridávať hodnotu. Na to slúži metóda append1. Táto metóda pridá novú hodnotu na koniec listu. Ak chceme pristúpiť k niektorému z prvkov listu, stačí za menom listu pozíciu obaliť do hranatých zátvoriek, teda <list>[<pozicia>]. Napríklad cisla[0].

# Program dostane cislo n, pocet cisel, ktore budu nasledovat
# na dalsich riadkoch. Nasledne nacita tieto cisla a vypise ich.
n = int(input())
vstup = []
for i in range(n):
  vstup.append(int(input()))

for i in range(n):
  print(vstup[i])

# Napriklad pre vstup:
# 3
# 1
# 5
# 3
# Vyda program vystup (tu skratene do jedneho riadku):
# 1 5 3

Tento program je možno najkomplexnejší, s ktorým sme sa zatiaľ v tomto kurze stretli. Na začiatku načíta číslo n, počet čísel, ktoré budú nasledovať na samostatných riadkoch. Následne v cykle od 0 po n - 1 (vrátane) načíta vždy jedno číslo int(input()) a pripojí ho do listu vstup pomocou append.

Následne program načítané čísla vypíše. Vo for-cykle od 0 po n - 1 postupne prístupi pomocou premennej i k prvkom poľa na indexoch 0n - 1 a vypíše ich.


  1. Métoda je funkcia naviazaná na konkrétny objekt, pričom objekt v Pythone je všetko (premenné, hodnoty, funkcie, ...). Zavolať metódu môžeme ako <objekt>.<metoda>()