Jak vytvářet a používat Python generátory

Jak Vytvaret A Pouzivat Python Generatory



Při práci vývojáře často potřebujete pracovat s mnoha nepodstatnými datovými hodnotami. Ukládání těchto hodnot spotřebovává kus paměti, což snižuje efektivitu vašeho kódu. V Pythonu však můžete použít generátory, abyste se této ztrátě vyhnuli.

Pomocí generátorů můžete hromadně vytvářet hodnoty určité sekvence, aniž byste je ukládali do paměti. Navíc funkce „generátor“ vytváří objekt, který při iteraci generuje hodnoty. Pokud si tedy chcete vyzkoušet generátory Pythonu, tento tutoriál je pro vás. Zde vysvětlíme, jak vytvořit a používat generátory Pythonu.

Jak vytvořit a používat Python generátory

Generátory Pythonu se používají k efektivní práci s datovými sekvencemi, zejména při práci s velkými nebo téměř nekonečnými datovými sadami. Výhody generátorů Pythonu jsou:







  1. Stručný: Generátory můžete snadno a stručným způsobem definovat, což zlepšuje čitelnost kódu.
  2. Paměťově efektivní: Generují jednu hodnotu současně, což spotřebovává méně paměti a zvyšuje efektivitu.
  3. Vestavěné funkce: V Pythonu mají generátory předdefinované funkce jako next(), iter() a yield pro usnadnění jejich práce.
  4. Funkce pozastavení a obnovení: Při práci na složitých algoritmech můžete použít funkci „výnos“ k pozastavení a obnovení provozu generátorů.

V Pythonu můžete vytvářet a používat generátory různými způsoby. Tuto část dále rozdělíme, abychom demonstrovali její implementaci na různých příkladech. Nejprve se podívejme na základní syntaxi:



def název_funkce ( ) :
výtěžek výraz

„Def“ definuje funkci a „výtěžek“ se používá k vytvoření funkce „generátoru“. K vytvoření generátoru využívajícího pouze jednořádkové výrazy však pomáhá i jiná metoda.



Funkce generátoru pro získání řetězce

Pojďme definovat funkci generátoru, abychom získali nějakou hodnotu:





def generátor ( ) :
výtěžek 'Toto je generátor'
pro hodnota v generátor ( ) :
tisk ( hodnota )

Když to iterujeme pomocí cyklu „for“, program vygeneruje zadané hodnoty, které můžete vytisknout pomocí funkce „print“.



Funkce generátoru pro vytvoření počítadla

Následující program je příkladem funkce generátoru pro generování posloupnosti čísel:

def můj_generátor ( n ) :
čelit = 0
zatímco čelit < n:
výtěžek čelit
počítadlo + = 1
pro čelit v můj_generátor ( 10 ) :
tisk ( čelit )

Pokud je například vstup 10, při kompilaci tohoto kódu získáte hodnoty od 0 do 9.

Fibonacciho řada pomocí funkce generátoru

Pojďme nyní použít Fibonacciho řadu, která je nejzákladnější řadou v programování:

def série_fibonacci ( omezit ) :
i , j = 0 , 1
zatímco i < omezit:
výtěžek i
i , j = j , i + j

A = série_fibonacci ( 6 )

tisk ( další ( A ) )
tisk ( další ( A ) )
tisk ( další ( A ) )
tisk ( další ( A ) )
tisk ( další ( A ) )
tisk ( další ( A ) )

Sérii získáme následovně spuštěním kódu:

Nejprve vytvořte objekt s názvem „a“ a zavolejte funkci „generátor“ s požadovaným vstupem jako argumentem.

Klíčové slovo next() je ruční iterátor. Pokaždé, když použijeme next(a), iteruje přes jednu hodnotu „a“. Můžeme však použít cyklus „for“ k vytištění všech hodnot „a“ najednou, jak je znázorněno v následujícím příkladu:

Použití smyčky „for“ místo funkce next():

def série_fibonacci ( omezit ) :
i , j = 0 , 1
zatímco i < omezit:
výtěžek i
i , j = j , i + j

A = série_fibonacci ( 6 )
pro hodnota v a:
tisk ( hodnota )

Výsledek spuštění kódu se nebude lišit, protože jde o alternativní metodu zápisu předchozího programu:

Co jsou generátorové výrazy v Pythonu?

Výrazy generátoru Pythonu jsou způsob, jak stručně vytvořit funkce „generátoru“ pomocí lineárních výrazů. Zde je jednoduchá syntaxe:

( výraz pro variabilní v iterovatelné -li stav )

Vytvořte například generátorový výraz pro výpočet druhých mocnin lichých čísel od 0 do „n“, když „n“ je vstupní hodnota.

liché_čtverce = ( x * x pro X v rozsah ( 10 ) -li X % 2 != 0 )
pro hodnota v liché_čtverce:
tisk ( hodnota )

Předchozí kód dává následující výsledek:

Závěr

To je vše o různých metodách vytváření a používání generátorů Pythonu. Vysvětlili jsme vše o výrazech generátoru Pythonu. Tyto výrazy byste měli použít, pokud uvažujete o použití generátorů v jakémkoli ze svých projektů, protože jsou efektivnější v každém programovacím aspektu.