Prejsť na hlavný obsah
Základy jazyka Python2026-07-29 · 8 min čítania

Vysvetlenie vysvetliviek zoznamu Python: Kedy ich používať a kedy nie (2026)

Pochopenie zoznamu je jednou z najviac nepochopených funkcií Pythonu. Začiatočníci sa im vyhýbajú, pretože „vyzerajú komplikovane“. Medziprodukty ich nadmerne využívajú, až kým každý tretí riadok nie je vnorený jednoriadkový, ktorý nikto nedokáže prečítať. Tento návod opravuje obe chyby.

Budeme sa zaoberať: presným trojdielnym tvarom, ktorým sa riadi každé porozumenie zoznamu, benchmarky verzus pre / map / filter, štyri vzory, ktoré by ste mali rozpoznať na prvý pohľad, a tvrdé pravidlo, kedy prestať používať porozumenie a namiesto toho siahnuť po obyčajnej slučke.

Tvar: [ čo | zdroj | filter]

Každý zoznam má tri časti v tomto poradí:

▶ PYTHONeditable · runs in your browser

Čítajte to nahlas: "dajte mi `výraz` pre každú `položku` v `iterovateľnom`, ale iba vtedy, keď je `podmienka` pravdivá."

Začnite ekvivalentným cyklom „for“ a potom ho zbaľte:

▶ PYTHONeditable · runs in your browser

Rovnaký výsledok – „[0, 4, 16, 36, 64]“. Porozumenie je jeden riadok, alokuje zoznam dopredu (žiadne volania append) a kompilátor bajtového kódu Pythonu vygeneruje LIST_APPEND — rýchlu cestu, ktorá preskočí vyhľadávanie atribútov na .append.

Benchmark: porozumenie verzus for-loop vs mapa + filter

Zostavenie zoznamu druhých párnych čísel od 0 do 100 000:

| Metóda | Čas (µs) | Príbuzný |

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

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

| zoznam(mapa(..., filter(...))) | 3 200 | 1,3× základná hodnota |

| Porozumenie zoznamu | 2 500 | 1,0× (najrýchlejšie) |

Merané v Pythone 3.13, jedno spustenie 1000 iterácií. Pochopenie víťazí, pretože neexistuje žiadne volanie funkcie pre jednotlivé prvky – výraz je vložený.

To znamená: nerobte mikrooptimalizáciu. V prípade zoznamu so 100 prvkami sú všetky tri dokončené za menej ako 100 µs. Najprv vyberte čitateľnosť.

Štyri vzory, ktoré by ste mali rozpoznať

1. Transformujte každý prvok

▶ PYTHONeditable · runs in your browser

Drop-in náhrada za map(str.title, names), ale nepotrebuje zalamovanie list(...).

2. Filter bez transformácie

▶ PYTHONeditable · runs in your browser

Čistejšie ako „zoznam(filter(lambda n: n > 0, čísla))“. Nie je potrebná žiadna „lambda“.

3. Filtrovať A transformovať

▶ PYTHONeditable · runs in your browser

Toto je miesto, kde porozumenie jasne prekonáva alternatívy – skúste to napísať pomocou map + filter a spočítajte zátvorky.

4. Vyrovnajte vnorený zoznam

▶ PYTHONeditable · runs in your browser

Na poradí záleží: „pre riadok v matici“ sa číta zľava doprava ako ekvivalentné vnorené slučky „pre“. Toto je jediný vzor, ​​kde vnorené porozumenia zostávajú čitateľné – čokoľvek hlbšie potrebuje slučku.

Kedy PRESTAŤ používať porozumenia

Tri prísne pravidlá zoradené podľa dôležitosti:

1. Tri alebo viac klauzúl „for“ → použite cyklus. Trojnásobne vnorené porozumenie je nečitateľné aj pre osobu, ktorá ho napísala pred 20 minútami.

▶ PYTHONeditable · runs in your browser

2. Vedľajšie účinky → použite slučku. Porozumenia sú na zostavenie zoznamu. Ak voláte funkciu pre jej vedľajšie účinky (zápis do súboru, odoslanie požiadavky), použite slučku. [print(x) for x in items] je vôňa kódu – vytvárate zoznam Nones.

3. Výraz je dlhší ako 60 znakov → rozdeľte ho. Ak pri analýze potrebujete premýšľať dlhšie ako 3 sekundy, rozdeľte ho na pomenovanú funkciu alebo slučku.

Diktujte a nastavte porozumenia — rovnaký tvar

Rovnaká syntax, rôzne zátvorky:

▶ PYTHONeditable · runs in your browser

Dict comprehensions sú obzvlášť užitočné pri invertovaní mapovania ({v: k for k, v in d.items()}) alebo pri vytváraní vyhľadávacej tabuľky zo zoznamu.

Generátor výrazov — bratranec priateľský k pamäti

Zrušte zátvorky, ponechajte zátvorky:

▶ PYTHONeditable · runs in your browser

Pre funkcie „sum“, „min“, „max“, „any“, „all“, „“, „.join(...)“ a ďalšie funkcie, ktoré sa opakujú raz, uprednostňujte výraz generátora – ušetrí sa tým pridelenie medziľahlého zoznamu. Pre čokoľvek, čo potrebujete indexovať alebo opakovať dvakrát, použite porozumenie.

Cvičenie: tri cvičenia

Prepíšte každý pomocou porozumenia zoznamu. Riešenia sú na konci.

1. Vzhľadom na slová = ["mačka", "slon", "pes", "hroch"] získate zoznam slov dlhších ako 4 znaky, všetky veľké.

2. Vzhľadom na `data = [{"meno": "Alice", "vek": 30}, {"meno": "Bob", "vek": 25}]" rozbaľte zoznam iba mien.

3. Zadané páry = [(1, 2), (3, 4), (5, 6)], získajte zoznam súčtov každého páru.

Riešenia:

▶ PYTHONeditable · runs in your browser

Porozumenia zoznamu sú charakteristickou črtou Pythonu – vedieť, kedy siahnuť po jednom (a kedy ho nechať ako slučku „pre“) je spoľahlivým ukazovateľom plynulosti na strednej úrovni. Precvičte si to prepísaním existujúcich cyklov for + .append, ktoré nájdete vo svojom vlastnom kóde; nie každý by sa mal stať chápaním, ale ten, ktorý by mal, bude po týždni zrejmý.

Ďalší krok: vyskúšajte 5 interaktívnych lekcií o porozumení zoznamu so skutočným Pythonom spusteným vo vašom prehliadači a s mentorom AI na každom kroku.

Chcete to vyskúšať?

15 lekcií zdarma po bezplatnej registrácii – žiadna karta. Otestujte platformu a potom sa rozhodnite.

Začnite zadarmo →

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.