Kako stvoriti i koristiti Python generatore

Kako Stvoriti I Koristiti Python Generatore



Dok radite kao programer, često morate raditi s mnogo beznačajnih vrijednosti podataka. Pohranjivanje tih vrijednosti troši dio memorije, smanjujući učinkovitost vašeg koda. Međutim, u Pythonu možete koristiti generatore kako biste izbjegli taj gubitak.

Pomoću generatora možete masovno proizvoditi vrijednosti određenog niza bez da ih u cijelosti pohranjujete u memoriju. Štoviše, funkcija 'generator' stvara objekt koji generira vrijednosti kada se ponavlja. Dakle, ako se želite dočepati Python generatora, ovaj vodič je za vas. Ovdje ćemo objasniti kako stvoriti i koristiti Python generatore.

Kako stvoriti i koristiti Python generatore

Python generatori koriste se za učinkovit rad na sekvencama podataka, uglavnom kada se radi o velikim ili gotovo beskonačnim skupovima podataka. Prednosti Python generatora su:







  1. Sažet: Generatore možete lako definirati na koncizan način što poboljšava čitljivost koda.
  2. Učinkovita memorija: Oni generiraju jednu vrijednost istovremeno što troši manje memorije i poboljšava učinkovitost.
  3. Ugrađene funkcije: U Pythonu generatori imaju unaprijed definirane funkcije kao što su next(), iter() i yield kako bi im se olakšao rad.
  4. Značajka pauziranja i nastavka: Dok radite na složenim algoritmima, možete koristiti funkciju 'yield' za pauziranje i nastavak rada generatora.

U Pythonu možete stvarati i koristiti generatore na razne načine. Dodatno ćemo podijeliti ovaj odjeljak kako bismo demonstrirali njegovu implementaciju koristeći različite primjere. Prvo, pogledajmo osnovnu sintaksu:



def naziv_funkcije ( ) :
prinos izraz

'def' definira funkciju, a 'yield' se koristi za izradu funkcije 'generator'. Međutim, druga metoda također pomaže stvoriti generator koristeći samo jednolinijske izraze.



Generatorska funkcija za dobivanje niza

Definirajmo funkciju generatora da bismo dobili neku vrijednost:





def generator ( ) :
prinos 'Ovo je generator'
za vrijednost u generator ( ) :
ispisati ( vrijednost )

Kada ga ponavljamo pomoću petlje 'for', program generira navedene vrijednosti koje možete ispisati pomoću funkcije 'print'.



Generator funkcija za izradu brojača

Sljedeći program primjer je funkcije generatora za generiranje niza brojeva:

def moj_generator ( n ) :
brojač = 0
dok brojač < n:
prinos brojač
brojač + = 1
za brojač u moj_generator ( 10 ) :
ispisati ( brojač )

Na primjer, ako je unos 10, dobit ćete vrijednosti od 0 do 9 nakon kompajliranja ovog koda.

Fibonaccijev niz pomoću funkcije generatora

Upotrijebimo sada Fibonaccijev niz koji je najosnovniji niz u programiranju:

def serija_fibonacci ( ograničiti ) :
ja , j = 0 , 1
dok ja < ograničiti:
prinos ja
ja , j = j , i + j

a = serija_fibonacci ( 6 )

ispisati ( Sljedeći ( a ) )
ispisati ( Sljedeći ( a ) )
ispisati ( Sljedeći ( a ) )
ispisati ( Sljedeći ( a ) )
ispisati ( Sljedeći ( a ) )
ispisati ( Sljedeći ( a ) )

Seriju ćemo dobiti na sljedeći način pokretanjem koda:

Prvo stvorite objekt pod nazivom 'a' i pozovite funkciju 'generator' sa željenim unosom kao argumentom.

Ključna riječ next() je ručni iterator. Svaki put kada koristimo next(a), ponavlja se jedna vrijednost 'a'. Međutim, možemo upotrijebiti petlju 'for' za ispis svih vrijednosti 'a' odjednom kao što je prikazano u sljedećem primjeru:

Upotreba petlje 'for' umjesto funkcije next():

def serija_fibonacci ( ograničiti ) :
ja , j = 0 , 1
dok ja < ograničiti:
prinos ja
ja , j = j , i + j

a = serija_fibonacci ( 6 )
za vrijednost u a:
ispisati ( vrijednost )

Rezultat pokretanja koda neće se razlikovati jer je to alternativna metoda pisanja prethodnog programa:

Što su izrazi generatora u Pythonu?

Python generatorski izrazi način su za koncizno stvaranje funkcija 'generatora' pomoću linearnih izraza. Evo jednostavne sintakse:

( izraz za varijabla u iterable ako stanje )

Na primjer, stvorite generatorski izraz za izračunavanje kvadrata neparnih brojeva od 0 do 'n' kada je 'n' ulazna vrijednost.

neparni_kvadrati = ( x * x za x u domet ( 10 ) ako x % 2 != 0 )
za vrijednost u neparni_kvadrati:
ispisati ( vrijednost )

Prethodni kod daje sljedeći rezultat:

Zaključak

Ovo je sve o različitim metodama za stvaranje i korištenje Python generatora. Objasnili smo sve o Python generatorskim izrazima. Trebali biste koristiti ove izraze ako razmišljate o korištenju generatora u bilo kojem od svojih projekata jer su učinkovitiji u svakom aspektu programiranja.