Pokročilé vlastnosti listov

Záporné indexovanie

V predošlých učebných materiáloch o listoch ste sa dozvedeli o ich indexovaní.

Listy však možno indexovať aj záporne, t.j. od konca listu. V prípade kladného indexovania, začíname indexovať od nuly, avšak pri zápornom indexovaní je posledný prvok indexovaný hodnotou -1, predposledný je na indexe -2, a tak ďalej.

Majme napríklad nasledujúce pole:

names = ["Emma", "Peter", "Anna", "Richard"]

Posledný prvok môžeme indexovať dvoma spôsobmi a to:

print(names[3])
print(names[-1])

V prípade, že chceme vybrať nultý prvok, tak to môžeme urobiť tiež dvomi spôsobmi:

print(names[0])
print(names[-4])

TODO: obrázok s indexami aj odzadu

Range indexing

V prípade, že chceme z listu vybrať iba určitú časť prvkov, používame rezy (anglicky slices).

Majme nasledovný list:

list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Vybrať všetky prvky listu možno nasledovne:

print(list[:])

Pokiaľ by sme potrebovali vybrať len určitý podinterval listu, píšeme príkaz v tvare list[n:m], kde $n$ znázorňuje index prvého vyberaného prvku intervalu a $m$ prvý prvok nepatriaci do zvoleného podintevalu.

Napríklad:

print(list[:3]) # výber prvých troch prvkov
print(list[7:]) # výber posledných troch prvkov
print(list[2:7]) # výstup bude [3, 4, 5, 6, 7]

V prípade funkcie range, kde máme možnosť nastaviť začiatok, koniec intervalu a a krok. Inak tomu nie je ani pri rezoch, tu tiež máme možnosť nastaviť krok:

list[2:7:3] # vystup bude [3,6]

Existencia prvku v liste

Niekedy môže nastať situácia, že potrebujeme zistiť, či sa konkrétny prvok nachádza v liste, s ktorým práve pracujeme.

Namiesto použitia for cyklu a prechádzania celého listu, stačí použiť podmienku.

Predstavme si, že máme nákupný zoznam:

shopping_list = ["apples", "pasta", "milk", "chocolate", "carrot"]

Ak chceme zistiť či sa už v zozname nachádza čokoláda, použijeme tento príkaz:

if "chocolate" in shopping_list:
    print("Item is already on the list.")