Kas ir ģeneratori Python un kā tos izmantot?



Uzziniet, kādi ir ģeneratori Python, kā arī priekšrocības. Uzziniet arī, kā tos izveidot un izmantot kopā ar dažādiem lietošanas gadījumiem.

Atkārtojamu vai objektu ģenerēšana, kas ļauj tiem pāriet, tiek uzskatīts par apgrūtinošu uzdevumu. Bet, iekšā , šī sāpīgā uzdevuma izpilde kļūst patiešām raita. Tāpēc turpināsim un rūpīgāk apskatīsim ģeneratorus Python.

kādi ir 6 veidi, kā izmantot šo atslēgvārdu?

Šeit ir visu šajā rakstā aplūkoto tēmu saraksts:





Tātad sāksim. :)

Kas ir ģeneratori Python?

Ģeneratori būtībā ir funkcijas, kas atgriež pārvietojamus objektus vai priekšmetus. Šīs funkcijas neražo visus vienumus uzreiz, drīzāk tās ražo pa vienam un tikai pēc nepieciešamības. Kad vien ir iekļauts, lai atkārtotu objektu kopu, tiek palaista ģeneratora funkcija. Ģeneratoriem ir arī vairākas priekšrocības.



Ģeneratoru izmantošanas priekšrocības

  • Bez ģeneratoriem Python versijā iterable izveide ir ārkārtīgi sarežģīta un ilgstoša.

  • Ģeneratorus ir viegli ieviest, jo tie automātiski ievieš __iter __ (), __next __ () un StopIteration, kas citādi ir skaidri jānorāda.



  • Atmiņa tiek saglabāta, kad vienumi tiek ražoti pēc vajadzības, atšķirībā no parastās . Šis fakts kļūst ļoti svarīgs, kad jums jāizveido milzīgs skaits atkārtotāju. Tas tiek uzskatīts arī par lielāko ģeneratoru priekšrocību.

  • Var izmantot bezgalīga daudzuma priekšmetu ražošanai.

  • Tos var arī izmantot, lai cauruļvadā veiktu vairākas darbības

Parastās un ģeneratora funkcijas:

Ģeneratori Python ir izveidoti tieši tāpat, kā jūs veidojat izmantojot atslēgvārdu “def”. Bet ģeneratora funkcijās peļņas vietā tiek izmantots ienesīguma atslēgvārds. Tas tiek darīts, lai informētu tulku, ka tas ir iterators. Ne tikai tas, ka ģeneratora funkcijas tiek palaistas, kad tiek izsaukta nākamā () funkcija, nevis pēc to nosaukuma, kā parasto funkciju gadījumā. Apsveriet šo piemēru, lai to labāk saprastu:

PIEMĒRS:

def func (a): iegūstiet a = [1,2,3] b = func (a) nākamo (b)

REZULTĀTS: [1, 2, 3]

Kā redzat, iepriekšminētajā izvadā func () tā izpildei izmanto ienesīguma atslēgvārdu un nākamo funkciju. Bet normālai darbībai jums būs nepieciešams šāds koda fragments:

PIEMĒRS:

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

REZULTĀTS: [1, 2, 3]

Ja paskatās uz iepriekš minēto piemēru, jūs varētu domāt, kāpēc izmantot funkciju Ģenerators, kad arī parastā funkcija atgriež to pašu izvadi. Tāpēc turpināsim un redzēsim, kā izmantot ģeneratorus Python.

Ģeneratora funkciju izmantošana:

Kā jau minēts iepriekš, ģeneratori Python ražo atkārtojamās versijas pa vienam. Apskatiet šo piemēru:

PIEMĒRS:

def myfunc (a): kamēr a> = 3: iegūstiet a = a + 1 b = myfunc (a) print (b) next (b)

Veicot šo funkciju, tiks parādīta šāda izeja:

REZULTĀTS: 4

Šeit ir atdots viens atkārtojams objekts, kas atbilst nosacījumam while. Pēc izpildes vadība tiek pārsūtīta zvanītājam. Gadījumā, ja ir nepieciešami vairāk vienumu, tā pati funkcija ir jāveic vēlreiz, izsaucot nākamo () funkciju.

nākamais (b)

REZULTĀTS: 5

Turpmāk izpildot, funkcija atgriezīs 6,7 utt. Ģeneratora funkcijas Python automātiski īsteno metodes __iter __ () un __next __ (). Tādēļ jūs varat atkārtot objektus, vienkārši izmantojot nākamo () metodi. Kad vienumu ģenerēšanai vajadzētu beigties, ģeneratora funkcijas ievieš StopIteration iekšēji, neraizējoties par zvanītāju. Šeit ir vēl viens piemērs:

PIEMĒRS:

a = 2 def myfunc (a): kamēr a> = 0: iegūstiet a - = 1 b = myfunc (a) print (b) next (b)

REZULTĀTS:

StopIteration-Generators Python-EdurekaŠis attēls parāda mūsu programmas izpildi nepieciešamo reižu skaitu. Ja mēģināt vēlreiz izsaukt nākamo funkciju, tā atgriež ziņojumu, kas attēlo StopIteration ir ieviests. Ja mēģināt to izdarīt ar parastajām funkcijām, atgrieztās vērtības nemainīsies vai atkārtosies. Apskatiet šo piemēru:

PIEMĒRS:

def z (): n = 1 ienesīgums n n = n + 3 ienesīgums n p = z () nākamais (p)

REZULTĀTS:

Salesforce izstrādātāja apmācība iesācējiem pdf

Ģeneratori ar cilpām:

Ja vēlaties veikt vienu un to pašu funkciju uzreiz, varat izmantot cilni ‘par’. Šī cilpa palīdz atkārtot objektus, un pēc visām ieviešanām tā izpilda StopIteration.

PIEMĒRS:

def z (): n = 1 ienesīgums n n = n + 3 ienesīgums n x vērtībai z (): print (x)

REZULTĀTS:

viens
4

Varat arī norādīt izteiksmes, lai ģenerētu atkārtojamus objektus.

Ģeneratora izteicieni:

Lai izveidotu atkārtotājus, kopā ar for ciklu var izmantot arī izteicienus. Parasti paaudzes atkārtojamie varianti ir daudz vieglāki. Ģeneratora izteiksme līdzinās saraksta izpratnei un tamlīdzīgi lambda funkcijas , ģeneratora izteiksmes izveido anonīmas ģeneratora funkcijas.

Apskatiet šo piemēru:

PIEMĒRS:

a = range (6) print ('List Comprehension', end = ':') b = [x + 2 x x a] print (b) print ('ģeneratora izteiksme, end =': n ') c = (x + 2 x x a) drukāt (c) y y c: drukāt (y)

REZULTĀTS:

Saraksta izpratne: [2, 3, 4, 5, 6, 7]

Ģeneratora izteiksme:

2
3
4
5
6

Kā redzat, iepriekšminētajā izvadā pirmais izteiciens ir saraksta izpratne, kas norādīta iekavās []. Saraksta izpratne rada pilnu vienumu sarakstu uzreiz. Nākamais ir ģeneratora izteiksme, kas atgriež tos pašus vienumus, bet pa vienam. Tas tiek norādīts, izmantojot () iekavas.


Ģeneratorsfunkcijas var izmantot arī citu funkciju ietvaros.Piemēram:

PIEMĒRS:

a = diapazona (6) izdruka ('Ģeneratora izteiksme', beigas = ': n') c = (x + 2 x vietnei a) print (c) print (min (c))

REZULTĀTS:

Ģeneratora izteiksme
2

Iepriekš minētā programma izdrukā minimālo vērtību, ja iepriekšminētā izteiksme tiek piemērota a vērtībām.

Lietošanas gadījumi:

Izmantosim ģeneratorus uz:

  • Ģenerējiet Fibonači sēriju
  • Skaitļu ģenerēšana

Fibonači sērijas ģenerēšana:

Fibonači sērija, kā mēs visi zinām, ir skaitļu sērija, kurā katrs skaitlis ir divu iepriekšējo skaitļu summa. Pirmie divi skaitļi ir 0 un 1. Šeit ir ģeneratora programma Fibonači sēriju ģenerēšanai:

PIEMĒRS:

def fibo (): pirmais, otrais = 0,1, bet True: pirmais pirmais, otrais = otrais, pirmais + otrais x x fibo (): ja x> 50: pārtraukuma druka (x, beigas = '')

REZULTĀTS:

0 1 1 2 3 5 8 13 21 34

Iepriekš sniegtajā attēlā parādīta Fibonači sērija, kuras vērtības ir mazākas par 50. Tagad apskatīsim, kā izveidot skaitļu sarakstu.

Skaitļu ģenerēšana:

Ja vēlaties ģenerēt noteiktus saraksta numurus, to varat izdarīt, izmantojot ģeneratora funkcijas. Apskatiet šo piemēru:

PIEMĒRS:

a = diapazons (10) b = (x x x a) drukāt (b) y y b: drukāt (y)

REZULTĀTS:

hadoop izstrādātāja lomas un pienākumi

0
viens
2
3
4
5
6
7
8
9

PIEMĒRS:

a = diapazons (2,10,2) b = (x x x a) print (b) y y b: print (y)

REZULTĀTS:


2
4
6
8

Iepriekš minētā programma ir atgriezusi pāra skaitļus no 2 līdz 10. Tādējādi mēs nonākam līdz šī raksta beigām par ģeneratoriem Python. Es ceru, ka jūs esat sapratis visas tēmas.

Pārliecinieties, ka pēc iespējas vairāk praktizējat un atgriezieties pie pieredzes.

Vai mums ir jautājums? Lūdzu, pieminējiet to šī emuāra “Generators in Python” komentāru sadaļā, un mēs pēc iespējas ātrāk sazināsimies ar jums.

Lai iegūtu padziļinātas zināšanas par Python kopā ar dažādām lietojumprogrammām, varat reģistrēties tiešraidē ar diennakts atbalstu un piekļuvi mūža garumā.