Kaj so generatorji v Pythonu in kako jih uporabljati?



Spoznajte, kaj so generatorji v Pythonu, skupaj s prednostmi. Naučite se tudi, kako jih ustvariti in uporabljati skupaj z različnimi primeri uporabe.

Ustvarjanje ponovljivih elementov ali predmetov, ki omogočajo prestop preko njih, je obremenjujoča naloga. Ampak, v , izvajanje te boleče naloge postane resnično gladko. Torej, poglejmo podrobneje Generatorje v Pythonu.

Tu je seznam vseh tem, zajetih v tem članku:





Začnimo torej. :)

Kaj so generatorji v Pythonu?

Generatorji so v bistvu funkcije, ki vrnejo predmete ali predmete, ki jih je mogoče prehoditi. Te funkcije ne ustvarijo vseh predmetov hkrati, temveč jih izdelajo enega za drugim in le po potrebi. Kadarkoli je vključen za iteracijo nabora elementov, se zažene funkcija generatorja. Tudi generatorji imajo številne prednosti.



Prednosti uporabe generatorjev

  • Brez generatorjev v Pythonu je izdelava iterabil izjemno težka in dolgotrajna.

  • Generatorji so enostavni za uporabo, saj samodejno izvajajo __iter __ (), __next __ () in StopIteration, ki jih je treba izrecno določiti.



  • Pomnilnik se shrani, ko se predmeti ustvarijo po potrebi, za razliko od običajnih . To dejstvo postane zelo pomembno, ko morate ustvariti ogromno število iteratorjev. To je tudi največja prednost generatorjev.

  • Lahko se uporablja za izdelavo neskončnega števila predmetov.

  • Uporabljajo se lahko tudi za pripravo številnih operacij

Običajne funkcije in funkcije generatorja:

Generatorji v Pythonu so ustvarjeni tako kot vi z uporabo ključne besede „def“. Toda funkcije generatorja uporabljajo ključno besedo yield namesto return. To stori, da tolmača obvesti, da je to iterator. Ne samo to, funkcije generatorja se zaženejo, ko pokličete funkcijo next () in ne z njihovim imenom, kot v primeru običajnih funkcij. Za boljše razumevanje si oglejte naslednji primer:

PRIMER:

def func (a): dobite a a = [1,2,3] b = func (a) naslednji (b)

IZHOD: [1, 2, 3]

Kot lahko vidite, v zgornjem izhodu funkc () uporablja ključno besedo yield in naslednjo funkcijo za njeno izvajanje. Toda za normalno delovanje boste potrebovali naslednji del kode:

PRIMER:

def func (a): vrne a a = [1,2,3] func (a)

IZHOD: [1, 2, 3]

kakšna je razlika med jquery in javascript

Če pogledate zgornji primer, se morda sprašujete, zakaj uporabiti funkcijo generatorja, ko običajna funkcija prav tako vrne isti izhod. Pojdimo torej naprej in poglejmo, kako uporabljati generatorje v Pythonu.

Uporaba funkcij generatorja:

Kot smo že omenili, generatorji v Pythonu proizvajajo ponovljive eno za drugo. Oglejte si naslednji primer:

PRIMER:

def myfunc (a): medtem ko a> = 3: dobite a a = a + 1 b = myfunc (a) print (b) naslednji (b)

Ko izvedete naslednjo funkcijo, boste videli naslednji izhod:

IZHOD: 4.

Tu je bil vrnjen en objekt, ki se je lahko ponovil, ki izpolnjuje pogoj while. Po izvedbi se nadzor prenese na klicatelja. Če je potrebnih več elementov, je treba isto funkcijo znova izvesti s klicem funkcije next ().

naslednji (b)

IZHOD: 5.

Pri nadaljnjih izvrševanjih bo funkcija vrnila 6,7 ​​itd. Generatorske funkcije v Pythonu samodejno implementirajo metode __iter __ () in __next __ (). Zato lahko predmete ponovite s pomočjo metode next (). Ko bi se generacija elementa morala končati, funkcije generatorja izvajajo StopIteration interno, ne da bi morali klicatelja skrbeti. Tu je še en primer tega:

PRIMER:

a = 2 def myfunc (a): medtem ko a> = 0: dobite a a - = 1 b = myfunc (a) print (b) next (b)

IZHOD:

StopIteration-Generators in Python-EdurekaZgornja slika prikazuje izvedbo našega programa tolikokrat. Če poskusite znova poklicati naslednjo funkcijo, vrne sporočilo z upodobitvijo StopIteration je bila izvedena. Če poskusite to narediti z običajnimi funkcijami, se vrnjene vrednosti ne bodo spreminjale ali ponavljale. Oglejte si spodnji primer:

PRIMER:

def z (): n = 1 donos n n = n + 3 donos n p = z () naprej (p)

IZHOD:

Generatorji z zankami:

Če želite isto funkcijo izvajati hkrati, lahko uporabite zanko 'for'. Ta zanka pomaga iteracijo predmetov in po vseh izvedbah izvede StopIteration.

PRIMER:

def z (): n = 1 izkoristek n n = n + 3 izkoristek n za x v z (): tisk (x)

IZHOD:

eno
4.

Določite lahko tudi izraze za generiranje iterable predmetov.

Izrazi generatorja:

Izraze lahko skupaj z zanko for uporabite tudi za izdelavo iteratorjev. To običajno poenostavi generacije. Izraz generatorja spominja na razumevanje seznama in podobno lambda funkcije , izrazi generatorja ustvarjajo anonimne funkcije generatorja.

Oglejte si spodnji primer:

PRIMER:

kako uporabiti podniz v javi -
a = obseg (6) print ('Razumevanje seznama', end = ':') b = [x + 2 za x v a] print (b) print ('Generatorski izraz', end = ': n') c = (x + 2 za x v a) print (c) za y v c: print (y)

IZHOD:

Razumevanje seznama: [2, 3, 4, 5, 6, 7]

Izraz generatorja:

2.
3.
4.
5.
6.

Kot lahko vidite, je v zgornjem izhodu prvi izraz razumevanje seznama, ki je določeno v oklepajih []. Razumevanje seznama ustvari celoten seznam predmetov hkrati. Naslednji je generatorski izraz, ki vrne iste elemente, vendar po enega. Določen je z uporabo oklepajev ().


Generatorfunkcije lahko uporabljate tudi znotraj drugih funkcij.Na primer:

PRIMER:

a = obseg (6) print ('Izraz generatorja', konec = ': n') c = (x + 2 za x in a) print (c) print (min (c))

IZHOD:

Izraz generatorja
2.

Zgornji program natisne najmanjšo vrednost, kadar je zgornji izraz uporabljen za vrednosti a.

Primeri uporabe:

Uporabljajmo generatorje v do:

  • Ustvari Fibonaccijevo serijo
  • Ustvarjanje številk

Ustvarjanje Fibonaccijeve serije:

Fibonaccijeva serija, kot jo vsi poznamo, je niz števil, pri čemer je vsako število vsota predhodnih dveh števil. Prvi dve številki sta 0 in 1. Tu je generatorski program za generiranje Fibonaccijevih serij:

PRIMER:

def fibo (): prvi, drugi = 0,1, medtem ko je True: dobite prvi prvi, drugi = drugi, prvi + drugi za x v fibo (): če je x> 50: prelomni tisk (x, konec = '

IZHOD:

0 1 1 2 3 5 8 13 21 34

Zgornji izhod prikazuje Fibonaccijevo vrsto z vrednostmi, manjšimi od 50. Oglejmo si zdaj, kako ustvariti seznam števil.

Ustvarjanje številk:

Če želite ustvariti določene številke seznama, lahko to storite s pomočjo funkcij generatorja. Oglejte si naslednji primer:

PRIMER:

a = obseg (10) b = (x za x v a) print (b) za y v b: print (y)

IZHOD:

0
eno
2.
3.
4.
5.
6.
7.
8.
9.

PRIMER:

a = obseg (2,10,2) b = (x za x v a) print (b) za y v b: print (y)

IZHOD:


2.
4.
6.
8.

Zgornji program je vrnil parne številke od 2 do 10. To nas pripelje do konca tega članka o Generatorjih v Pythonu. Upam, da ste razumeli vse teme.

Poskrbite, da boste čim več vadili in si povrnili izkušnje.

Imate vprašanje za nas? Prosimo, omenite to v oddelku za komentarje tega bloga 'Generatorji v Pythonu', mi se vam bomo javili v najkrajšem možnem času.

Če želite pridobiti poglobljeno znanje o Pythonu skupaj z različnimi aplikacijami, se lahko prijavite v živo s 24-urno podporo in življenjskim dostopom.

pretvori dvojno v celo število