Iterátory
- Iterátor je objekt, který implementuje protokol iterátorů v Pythonu, což znamená, že má dunder metody
__iter__()
a__next__()
. - Iterátory umožňují iteraci přes kolekce prvků jedním směrem, aniž by bylo nutné načítat všechny prvky do paměti najednou.
- Když jsou všechny prvky vyčerpány, vyvolá se výjimka
StopIteration
.
vytvoření iterátoru
MyIterator
__iter__
vrací iterátor sám.__next__
vrací další prvek v sekvenci nebo vyvoláStopIteration
, pokud jsou všechny prvky vyčerpány.
Generátory
- Generátory jsou speciální typy iterátorů, které jsou jednodušší na implementaci.
- Jsou vytvářeny pomocí klíčového slova
yield
, které umožňuje funkcím vracet hodnoty postupně, místo aby vrátily vše najednou. - To umožňuje generovat hodnoty na požádání, což šetří paměť a umožňuje práci s velkými datovými soubory nebo nekonečnými sekvencemi.
vytvoření generátoru
- automaticky implementují metody
__iter__
a__next__
a spravují svůj interní stav. - Generátory jsou užitečné v situacích, kdy potřebujete efektivně generovat velké množství dat nebo pracovat s nekonečnými sekvencemi. Jsou také často používány ve spojení s funkcemi jako
map()
,filter()
areduce()
pro elegantní manipulaci s daty.
generátor s nekonečnou řadou
Iterátory a generátory
- Každý generátor je iterátor, ale ne každý iterátor je generátor.
- Generátory poskytují jednodušší a kompaktnější způsob psaní iterátorů, protože automatizují vytváření metod
__iter__()
a__next__()
a správu stavu.
Navigace
Předchozí: Rekurze a rekurzivní datové struktury (spojové seznamy, stromy) Následující: Synchronizace vláken - problém kritické sekce, zámky, semafory Celý okruh: 3. Programovací jazyky a programování