Ako vytvoriť a používať generátory Pythonu

Ako Vytvorit A Pouzivat Generatory Pythonu



Pri práci vývojára často potrebujete pracovať s mnohými nepodstatnými hodnotami údajov. Ukladanie týchto hodnôt spotrebuje kus pamäte, čím sa zníži efektívnosť vášho kódu. V Pythone však môžete použiť generátory, aby ste sa vyhli tejto strate.

Pomocou generátorov môžete hromadne produkovať hodnoty určitej sekvencie bez toho, aby ste ich úplne uložili do pamäte. Okrem toho funkcia „generátor“ vytvára objekt, ktorý pri iterácii generuje hodnoty. Takže, ak sa chcete dostať do rúk generátorov Pythonu, tento tutoriál je pre vás. Tu vysvetlíme, ako vytvoriť a používať generátory Pythonu.

Ako vytvoriť a používať generátory Pythonu

Generátory Pythonu sa používajú na efektívnu prácu s dátovými sekvenciami, najmä pri práci s veľkými alebo takmer nekonečnými množinami údajov. Výhody generátorov Pythonu sú:







  1. Stručný: Generátory môžete jednoducho definovať stručným spôsobom, čo zlepšuje čitateľnosť kódu.
  2. Pamäťová efektívnosť: Generujú súčasne jednu hodnotu, ktorá spotrebuje menej pamäte a zvyšuje efektivitu.
  3. Vstavané funkcie: V Pythone majú generátory preddefinované funkcie ako next(), iter() a yield na uľahčenie ich práce.
  4. Funkcia pozastavenia a obnovenia: Pri práci na zložitých algoritmoch môžete použiť funkciu „výťažok“ na pozastavenie a obnovenie prevádzky generátorov.

V Pythone môžete vytvárať a používať generátory rôznymi spôsobmi. Túto časť ďalej rozdelíme, aby sme demonštrovali jej implementáciu na rôznych príkladoch. Najprv sa pozrime na základnú syntax:



def názov_funkcie ( ) :
výnos výraz

„Def“ definuje funkciu a „výťažok“ sa používa na vytvorenie funkcie „generátora“. Iná metóda však pomáha vytvoriť generátor iba pomocou jednoriadkových výrazov.



Funkcia generátora na získanie reťazca

Definujme funkciu generátora na získanie určitej hodnoty:





def generátor ( ) :
výnos 'Toto je generátor'
pre hodnotu v generátor ( ) :
vytlačiť ( hodnotu )

Keď to iterujeme pomocou cyklu „for“, program vygeneruje zadané hodnoty, ktoré môžete vytlačiť pomocou funkcie „print“.



Funkcia generátora na vytvorenie počítadla

Nasledujúci program je príkladom funkcie generátora na generovanie postupnosti čísel:

def môj_generátor ( n ) :
počítadlo = 0
zatiaľ čo počítadlo < n:
výnos počítadlo
počítadlo + = 1
pre počítadlo v môj_generátor ( 10 ) :
vytlačiť ( počítadlo )

Napríklad, ak je vstup 10, pri kompilácii tohto kódu získate hodnoty od 0 do 9.

Fibonacciho séria využívajúca funkciu generátora

Použime teraz sériu Fibonacci, ktorá je najzákladnejšou sériou v programovaní:

def séria_fibonacci ( limit ) :
i , j = 0 , 1
zatiaľ čo i < limit:
výnos i
i , j = j , i + j

a = séria_fibonacci ( 6 )

vytlačiť ( Ďalšie ( a ) )
vytlačiť ( Ďalšie ( a ) )
vytlačiť ( Ďalšie ( a ) )
vytlačiť ( Ďalšie ( a ) )
vytlačiť ( Ďalšie ( a ) )
vytlačiť ( Ďalšie ( a ) )

Spustením kódu získame sériu nasledovne:

Najprv vytvorte objekt s názvom „a“ a zavolajte funkciu „generátor“ s požadovaným vstupom ako argumentom.

Kľúčové slovo next() je manuálny iterátor. Zakaždým, keď použijeme next(a), iteruje cez jednu hodnotu „a“. Môžeme však použiť cyklus „for“ na tlač všetkých hodnôt „a“ naraz, ako je znázornené v nasledujúcom príklade:

Použitie cyklu „for“ namiesto funkcie next():

def séria_fibonacci ( limit ) :
i , j = 0 , 1
zatiaľ čo i < limit:
výnos i
i , j = j , i + j

a = séria_fibonacci ( 6 )
pre hodnotu v a:
vytlačiť ( hodnotu )

Výsledok spustenia kódu sa nebude líšiť, pretože ide o alternatívnu metódu písania predchádzajúceho programu:

Čo sú výrazy generátora v Pythone?

Výrazy generátora Pythonu sú spôsob, ako stručne vytvoriť funkcie „generátora“ pomocou lineárnych výrazov. Tu je jednoduchá syntax:

( výraz pre premenlivý v iterovateľné ak stave )

Napríklad vytvorte výraz generátora na výpočet druhých mocnín nepárnych čísel od 0 do „n“, keď „n“ je vstupná hodnota.

nepárne_štvorce = ( x * x pre X v rozsah ( 10 ) ak X % 2 != 0 )
pre hodnotu v nepárne_štvorce:
vytlačiť ( hodnotu )

Predchádzajúci kód dáva nasledujúci výsledok:

Záver

Toto je všetko o rôznych metódach vytvárania a používania generátorov Pythonu. Vysvetlili sme všetko o výrazoch generátora Pythonu. Tieto výrazy by ste mali použiť, ak uvažujete o použití generátorov v ktoromkoľvek z vašich projektov, pretože sú efektívnejšie v každom aspekte programovania.