Python kolekce

Úvod

  • Kolekce = datové struktury pro ukládání více hodnot.

  • V Pythonu máme několik základních kolekcí:

    • list = seznam

    • tuple = n-tice

    • set = množina

    • dict = slovník

List (seznam)

  • Ukládá pořadí prvků.

  • První prvek má index 0.

  • Prvky lze měnit.

  • Vhodný pro dynamická data.

ovoce = ["jablko", "banán", "hruška"]
ovoce.append("pomeranč")   # přidání
ovoce.remove("banán")      # odstranění
print(ovoce[0])            # přístup k prvnímu prvku
ovoce.pop()                # vrátí a odstraní poslední prvek seznamu.

Úkol – List

  1. Vytvoř list 5 čísel.

  2. Přidej do listu číslo 10.

  3. Odstraň první číslo.

  4. Spočítej součet všech čísel v listu.

Tuple (n-tice)

  • Podobné jako list, ale neměnitelné (immutable).

  • Vhodné pro pevná data, např. souřadnice.

bod = (10, 20)
x, y = bod   # rozbalení
print(bod[0])   # přístup k prvku

Úkol – Tuple

  1. Vytvoř tuple se 3 městy.

  2. Vytiskni první město.

  3. Zkus do tuple přidat další město – co se stane?

Set (množina)

  • Ukládá jedinečné prvky (bez duplicit).

  • Nemá garantované pořadí.

  • Podporuje množinové operace.

cisla = {1, 2, 3, 3}
print(cisla)      # {1, 2, 3}
cisla.add(4)
cisla.remove(2)
print(cisla | {3, 5})   # sjednocení

Úkol – Set

  1. Vytvoř set se jmény: {„Jan“, „Petr“, „Jan“, „Eva“}.

  2. Kolik prvků obsahuje?

  3. Přidej do setu jméno „Lucie“.

  4. Proveď sjednocení se setem {„Tomáš“, „Eva“}.

Dict (slovník)

  • Ukládá dvojice klíč – hodnota.

  • Rychlý přístup přes klíče.

student = {"jmeno": "Jan", "vek": 20}
print(student["jmeno"])
student["vek"] = 21
student["obor"] = "IT"
for k, v in student.items():
    print(k, v)

Úkol – Dict

  1. Vytvoř slovník pro auto: {„značka“: „Škoda“, „model“: „Octavia“, „rok“: 2020}.

  2. Vytiskni model auta.

  3. Změň rok na 2024.

  4. Přidej klíč „barva“ s hodnotou „modrá“.

Práce s kolekcemi

Iterace

for ovoce in ["jablko", "banán"]:
    print(ovoce)

List comprehension

ctverce = [x**2 for x in range(5)]
print(ctverce)  # [0, 1, 4, 9, 16]

Funkce len, in

ovoce = ["jablko", "banán"]
print(len(ovoce))   # 2
print("banán" in ovoce)  # True
print("ananas" not in ovoce)  # True

Slice

  • Slice = operace pro výběr části sekvence (list, tuple, string).

  • Zápis: sekvence[start:stop:step]

    • start – index, kde začíná (včetně).

    • stop – index, kde končí (bez tohoto prvku).

    • step – krok (po kolika se vybírá).

Základní příklady

cisla = [0, 1, 2, 3, 4, 5, 6]

print(cisla[2:5])   # [2, 3, 4]
print(cisla[:4])    # [0, 1, 2, 3]
print(cisla[3:])    # [3, 4, 5, 6]
print(cisla[:])     # [0, 1, 2, 3, 4, 5, 6]

Použití kroku

cisla = [0, 1, 2, 3, 4, 5, 6]

print(cisla[::2])   # [0, 2, 4, 6]
print(cisla[1::2])  # [1, 3, 5]
print(cisla[1:6:2]) # [1, 3, 5]

Negativní indexy

  • V Pythonu lze indexovat i od konce.

  • -1 = poslední prvek, -2 = předposlední atd.

cisla = [0, 1, 2, 3, 4, 5, 6]

print(cisla[-3:])   # [4, 5, 6]
print(cisla[:-2])   # [0, 1, 2, 3, 4]
print(cisla[::-1])  # [6, 5, 4, 3, 2, 1, 0]

Slice u stringu

text = "Python"

print(text[0:3])   # "Pyt"
print(text[-3:])   # "hon"
print(text[::-1])  # "nohtyP"

Úkoly

  1. Vytvoř list [10, 20, 30, 40, 50, 60].

  2. Získej prvky od indexu 1 do 4.

  3. Vyber každý druhý prvek.

  4. Získej poslední 3 prvky.

  5. Otoč celý list pozpátku.

  6. Aplikuj slice na string "programovani" → vypiš první 6 znaků.

Shrnutí

  • List = měnitelný, uspořádaný.

  • Tuple = neměnitelný, uspořádaný.

  • Set = jedinečné prvky, množinové operace.

  • Dict = klíč x hodnota.

Závěrečný úkol

  1. Máš seznam čísel [1,2,2,3,4,4,5].

  2. Pomocí setu odstraň duplicity.

  3. Ulož výsledek do slovníku pod klíč "unikatni".

  4. Vytiskni délku výsledného seznamu.