Shrnutí na Funkce a seznamy v Pythonu
Funkce a Seznamy v Pythonu: Kompletní Průvodce pro Studenty
Úvod
Python seznamy (list) jsou základní a velmi užitečná datová struktura pro ukládání uspořádaných kolekcí hodnot. Tento materiál vás provede vytvářením seznamů, základní manipulací, běžnými metodami a praktickými příklady použití v reálných úlohách.
Seznam (list) je uspořádaná, indexovatelná a mutable kolekce, která může obsahovat různé datové typy včetně dalších seznamů.
Základy seznamů
Vytvoření seznamu
- Přímé přiřazení:
numbers = [1, 2, 3, 4, 5] - Prázdný seznam a postupné přidávání:
measurements = []measurements.append(36.5)
Indexování a slicing
- Indexování začíná na 0. Přístup k prvkům:
patients[0],patients[-1](poslední prvek). - Slicing vybírá podsekvence:
patients[1:4](indexy 1,2,3),patients[:3],patients[2:]. - Kroky ve slice:
patients[::2](každý druhý),patients[::-1](pozpátku).
Praktický příklad:
- patients = ["Jan", "Marie", "Petr", "Anna", "Tomáš"]
patients[0]→ "Jan"patients[-1]→ "Tomáš"patients[1:4]→ ["Marie", "Petr", "Anna"]
Pamatuj: u seznamů můžeš měnit prvky přes index; u řetězců to nejde (řetězce jsou immutable).
Operace se seznamy
Spojování a opakování
- Spojení:
all_patients = group_a + group_b - Opakování:
week_data = [0] * 7
Kontrola obsahu
in,not inpro testování přítomnosti:if "Jan Novák" in patients:
Porovnávání seznamů
- Porovnává se pořadí i hodnoty:
[1,2,3] == [1,2,3]→ True,[1,2,3] == [3,2,1]→ False
Práce s více seznamy současně
enumerate()
- Elegantní způsob, jak získat index i hodnotu:
for i, patient in enumerate(patients, start=1): print(f"{i}. {patient}")
zip()
- Pro paralelní průchod dvěma (nebo více) seznamy:
for name, temp in zip(names, temperatures): print(f"{name}: {temp}°C")
Metody pro přidávání prvků
append(x)– přidá jediný prvek na konec:patients.append("Petr").extend(iterable)– rozbalí iterovatelný objekt a přidá jeho prvky:patients.extend(["Petr","Anna"]).insert(index, x)– vloží prvek na konkrétní pozici:patients.insert(1, "Anna").
Pozor: append(["Petr","Anna"]) přidá celý seznam jako jeden prvek (vnořený seznam).
Metody pro odebírání prvků
remove(x)– odebere první výskyt hodnotyx. Pokud neexistuje, vyhodíValueError.- Bezpečnostní vzor:
if x in patients: patients.remove(x).
- Bezpečnostní vzor:
pop([index])– odebere a vrátí prvek na indexu, výchozí je poslední prvek.last = patients.pop()first = patients.pop(0)
Další užitečné metody
index(x)– vrátí index prvního výskytux.count(x)– spočítá výskytyx.sort()– seřadí seznam in-place (mění původní seznam). Nemá návratovou hodnotu (vracíNone).sorted(list)– vrátí nový seřazený seznam, původní nezměněn.
Tabulka: Porovnání sort() vs sorted()
| Vlastnost | list.sort() | sorted(list) |
|---|---|---|
| Mění původní seznam | Ano | Ne |
| Vrací nový seznam | Ne | Ano |
| Použití | Když nepotřebujete původní | Když chceš zachovat původní |
Kopie seznamu a reference
- Přiřazení
b = avytvoří druhý název pro stejný objekt (sdílená reference). - Pro skutečnou kopii použij
a.copy()neboa[:].
Příklad:
- a = [1,2,3]
- b = a
- b.append(4) # a je nyní [1,2,3,4]
- c = a.copy(); c.append(5) # a zůstane [1,2,3,4], c je [1,2,3,4,5]
Převod z jiných datových typů
- Z textu na seznam:
list("ACGTTAGC")→ rozbalí znaky. - Ze stringu pomocí
split():data = "Jan,25,Praha"; parts = data.split(",")→ ["Jan","25","Praha"]
Už máš účet? Přihlásit se
Python Seznamy a Operace
Klíčová slova: Python
Klíčové pojmy: Seznam je mutable, indexovatelný a uspořádaný, Vytvoření: [] nebo [a,b,c]; prázdný a postupné append(), Indexování začíná od 0; slicing: start:stop:step, append() přidá prvek; extend() rozbalí iterabilní objekt, insert(i,x) vloží prvek na index i, remove(x) odebere první výskyt; pop([i]) vrátí a odebere prvek, list.sort() mění seznam in-place; sorted(list) vrací nový seznam, b = a je reference; použij a.copy() nebo a[:] pro kopii, enumerate() vrací index a hodnotu; zip() pro paralelní průchod, split() převádí řetězec na seznam podle separátoru, Kontrola obsahu pomocí in a not in, sort() nevrací hodnotu (None) — nekombinovat s přiřazením