Prechádzanie prvkov (iterovanie) pomocou for – cyklu:
nadmorska_vyska = [150, 260, 380, 490, 560, 950]
zaciatok = 0
spolu = 0
menej_ako_100 = 0
for i, j in enumerate(nadmorska_vyska):
print(f'{i+1}. deň, vystúpali do výšky {j}')
print("tzv. vystúpali o ", j - zaciatok, "m")
spolu += j - zaciatok
if j - zaciatok < 100:
menej_ako_100 += 1
zaciatok = j
priemer = spolu / len(nadmorska_vyska)
print("priemerná denná vystúpaná výška:", round(priemer))
print("Počet hodnôt menej ako 100: ", menej_ako_100)
1. deň, vystúpali do výšky 150
tzv. vystúpali o 150 m
2. deň, vystúpali do výšky 260
tzv. vystúpali o 110 m
3. deň, vystúpali do výšky 380
tzv. vystúpali o 120 m
4. deň, vystúpali do výšky 490
tzv. vystúpali o 110 m
5. deň, vystúpali do výšky 560
tzv. vystúpali o 70 m
6. deň, vystúpali do výšky 950
tzv. vystúpali o 390 m
priemerná denná vystúpaná výška: 158
Počet hodnôt menej ako 100: 1
Najprv som vytvoril zoznam výškových hodnôt a definoval som si pomocnú premennú začiatok a spolu. Vytvorený zoznam nadmorska_vyska vložený do funkcie enumerate, ktorá nám vráti vždy index a hodnotu následne prechádzam for cyklom. Následne už len vypíšem do shellu hodnoty, na konci jednotlivého cyklu vždy priradím poslednú hodnotu do premennej zaciatok, pripočítam prejdenú výšku do premennej spolu. Medzitým naviac overím, či je hodnota menšia ako 100, ak áno pripočítam 1 do premennej menej_ako_100. V riadku 13 vydelím spolu počtom prvkov v zozname, ktorý zistím cez funkciu len() a v riadku 15 opäť vypíšem do shellu (je tam naviac funkcia round() pre zaokrúhlenie). V riadku 17 vypíšem koľko hodnôt je menej ako 100.
Zmena hodnôt v zozname
V nasledovných riadkoch si ukážeme ako jednoducho vieme zameniť jednotlivé hodnoty v zozname, využijeme pri tom indexovanie. Zmena jedného prvku:
nadmorska_vyska = [150, 260, 380, 490, 560, 950]
nadmorska_vyska[1] = 10
print (nadmorska_vyska)
[150, 10, 380, 490, 560, 950]
Zmena viacerých prvkov cez for cyklus, použijeme funkciu enumerate, ktorá nám vráti prvok a jeho index:
nadmorska_vyska = [150, 260, 380, 490, 560, 950]
for i, j in enumerate(nadmorska_vyska):
nadmorska_vyska[i] += 10
print(nadmorska_vyska)
[160, 270, 390, 500, 570, 960]
Poprípade nejak to povýšiť o podmienku:
nadmorska_vyska = [150, 260, 380, 490, 560, 950]
for i, j in enumerate(nadmorska_vyska):
if nadmorska_vyska[i] < 400:
nadmorska_vyska[i] += 100
else:
nadmorska_vyska[i] += 10
print(nadmorska_vyska)
[250, 360, 480, 500, 570, 960]
Vytváranie prázdneho zoznamu.
Niekedy nastane situácia, že budeme potrebovať vytvoriť prázdny zoznam, aby sme následne mohli niečo priradzovať na už vytvorené pozície:
zoznam = [None] * 50
print(zoznam)
for i in range(50):
zoznam[i] = i
print(zoznam)
[None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
Rezy v zoznamoch:
Ako pri reťazcoch, aj pri zoznamoch je možné používať rez:
nadmorska_vyska = [150, 260, 380, 490, 560, 950]
print(nadmorska_vyska[1:3])
# priradenie do rezu, dva prvky sa nahradili tromi
nadmorska_vyska[1:3] = 10, 20, 30, 50, 60
print(nadmorska_vyska)
# priradenie do rezu, dva prvky sa nahradili jedným
nadmorska_vyska[1:3] = "x"
print(nadmorska_vyska)
# pozor upravujeme pôvodný zoznam - mutable operácia
[260, 380]
[150, 10, 20, 30, 50, 60, 490, 560, 950]
[150, 'x', 30, 50, 60, 490, 560, 950]
Vyhľadanie v zozname:
nadmorska_vyska = [150, 260, 380, 490, 560, 950]
print(150 in nadmorska_vyska)
True
def pocet(auta, nazov):
vysl = 0
for prvok in auta:
if prvok == nazov:
vysl += 1
return vysl
auta = ["skoda", "dacia", "audi", "dacia", "trabant", "dacia"]
pocet_vyraz = pocet(auta, "dacia")
print(pocet_vyraz)
3