Přejít k hlavnímu obsahu
Základy Pythonu2026-07-29 · 8 min čtení

Vysvětlení pochopení seznamu Python: Kdy je používat a kdy ne (2026)

Porozumění seznamu je jednou z nejvíce nepochopených funkcí Pythonu. Začátečníci se jim vyhýbají, protože „vypadají složitě“. Meziprodukty je nadměrně využívají, dokud není každý třetí řádek vnořenou jednořádkovou, kterou nikdo nemůže přečíst. Tento návod opravuje obě chyby.

Probereme: přesný třídílný tvar, kterým se každé porozumění seznamům řídí, benchmarky vs. ,pro / mapa / ,filtr, čtyři vzory, které byste měli rozpoznat na první pohled, a tvrdé pravidlo, kdy přestat používat porozumění a místo toho sáhnout po obyčejné smyčce.

Tvar: [ co | zdroj | filtr]

Každé porozumění seznamu se skládá ze tří částí v tomto pořadí:

▶ PYTHONeditable · runs in your browser

Čtete to nahlas: "poskytněte mi `výraz` pro každou `položku` v `iterovatelné`, ale pouze když je `podmínka` pravdivá."

Začněte ekvivalentní smyčkou „for“ a poté ji sbalte:

▶ PYTHONeditable · runs in your browser

Stejný výsledek — [0, 4, 16, 36, 64]. Porozumění je jeden řádek, alokuje seznam dopředu (žádná volání append) a kompilátor bajtového kódu Pythonu vygeneruje LIST_APPEND — rychlou cestu, která přeskakuje vyhledávání atributů na .append.

Benchmark: porozumění vs for-loop vs mapa+filtr

Sestavení seznamu druhých sudých čísel od 0 do 100 000:

| Metoda | Čas (µs) | Příbuzný |

|---|---|---|

| for + .append | 4 800 | 1,9× základní linie |

| seznam(mapa(..., filtr(...))) | 3 200 | 1,3× základní linie |

| Porozumění seznamu | 2 500 | 1,0× (nejrychlejší) |

Měřeno v Pythonu 3.13, jeden běh 1000 iterací. Pochopení vítězí, protože neexistuje žádné volání funkce pro jednotlivé prvky – výraz je vložen.

To znamená: neprovádět mikrooptimalizaci. U seznamu o 100 prvcích se všechny tři dokončí za méně než 100 µs. Nejprve vyberte čitelnost.

Čtyři vzory, které byste měli rozpoznat

1. Transformujte každý prvek

▶ PYTHONeditable · runs in your browser

Drop-in náhrada za map(str.title, names), ale nepotřebuje zalamování list(...).

2. Filtr bez transformace

▶ PYTHONeditable · runs in your browser

Čistší než seznam(filtr(lambda n: n > 0, čísla)). Není potřeba žádná "lambda".

3. Filtr A transformace

▶ PYTHONeditable · runs in your browser

Zde porozumění jasně překonává alternativy – zkuste to napsat pomocí map + filtr a spočítejte závorky.

4. Sloučit vnořený seznam

▶ PYTHONeditable · runs in your browser

Na pořadí záleží: „pro řádek v matici“ se čte zleva doprava jako ekvivalentní vnořené smyčky „for“. Toto je jediný vzorec, kde vnořené porozumění zůstávají čitelné – cokoliv hlubšího potřebuje smyčku.

Kdy PŘESTAT používat porozumění

Tři tvrdá pravidla, seřazená podle důležitosti:

1. Tři nebo více klauzulí `for` → použijte cyklus. Trojitě vnořené porozumění je nečitelné i pro osobu, která jej napsala před 20 minutami.

▶ PYTHONeditable · runs in your browser

2. Vedlejší účinky → použijte smyčku. Pochopení jsou pro sestavení seznamu. Pokud funkci voláte kvůli jejím vedlejším efektům (zápis do souboru, odeslání požadavku), použijte smyčku. [print(x) pro x v položkách] je vůně kódu – vytváříte seznam `Žádné'.

3. Výraz je delší než 60 znaků → rozdělte jej. Pokud potřebujete přemýšlet déle než 3 sekundy, abyste jej mohli analyzovat, rozdělte jej na pojmenovanou funkci nebo smyčku.

Diktujte a nastavte porozumění — stejný tvar

Stejná syntaxe, různé závorky:

▶ PYTHONeditable · runs in your browser

Dict comprehensions jsou zvláště užitečné pro invertování mapování ({v:k for k, v in d.items()}) nebo vytváření vyhledávací tabulky ze seznamu.

Generátor výrazů — pamětní bratranec

Odstraňte závorky, ponechte závorky:

▶ PYTHONeditable · runs in your browser

Pro sum, min, max, any, all, , ,,.join(...) a další funkce, které se opakují jednou, upřednostňujte výraz generátoru – ušetří to alokaci mezilehlého seznamu. Pro cokoli, co potřebujete indexovat nebo opakovat dvakrát, použijte porozumění.

Cvičení: tři cvičení

Přepište každý pomocí porozumění seznamu. Řešení jsou na konci.

1. Zadané slova = ["kočka", "slon", "pes", "hroch"], získáte seznam slov delších než 4 znaky, všechna velká písmena.

2. Vzhledem k tomu, že data = [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}], extrahujte seznam pouze jmen.

3. Zadané páry = [(1, 2), (3, 4), (5, 6)], získejte seznam součtů každého páru.

Řešení:

▶ PYTHONeditable · runs in your browser

Seznam porozumění je charakteristickou vlastností Pythonu — vědět, kdy po něm sáhnout (a kdy ho nechat jako smyčku „pro“) je spolehlivým ukazatelem plynulosti na střední úrovni. Cvičte přepisováním existujících smyček for + .append, které najdete ve svém vlastním kódu; ne každý by se měl stát pochopením, ale ti, kteří by měli, budou po týdnu cítit jasně.

Další krok: vyzkoušejte 5 interaktivních lekcí porozumění seznamu se skutečným Pythonem běžícím ve vašem prohlížeči a mentorem AI na každém kroku.

Jste připraveni to vyzkoušet?

15 lekcí zdarma po bezplatné registraci – žádná karta. Vyzkoušejte platformu a pak se rozhodněte.

Začněte zdarma →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.