Kā izveidot un lietot Python ģeneratorus

Ka Izveidot Un Lietot Python Generatorus



Strādājot par izstrādātāju, jums bieži ir jāstrādā ar daudzām nenozīmīgām datu vērtībām. Šo vērtību saglabāšana patērē daudz atmiņas, samazinot koda efektivitāti. Tomēr Python varat izmantot ģeneratorus, lai izvairītos no šiem zaudējumiem.

Izmantojot ģeneratorus, jūs varat masveidā ražot noteiktas secības vērtības, nesaglabājot tās pilnībā atmiņā. Turklāt funkcija “ģenerators” izveido objektu, kas ģenerē vērtības, kad to atkārto. Tātad, ja vēlaties apgūt Python ģeneratorus, šī apmācība ir paredzēta jums. Šeit mēs paskaidrosim, kā izveidot un izmantot Python ģeneratorus.

Kā izveidot un izmantot Python ģeneratorus

Python ģeneratori tiek izmantoti, lai efektīvi strādātu ar datu sekvencēm, galvenokārt, strādājot ar lielām vai gandrīz bezgalīgām datu kopām. Python ģeneratoru priekšrocības ir:







  1. Īsi: Jūs varat viegli definēt ģeneratorus kodolīgā veidā, kas uzlabo koda lasāmību.
  2. Efektīva atmiņa: Tie vienlaikus ģenerē vienu vērtību, kas patērē mazāk atmiņas un uzlabo efektivitāti.
  3. Iebūvētās funkcijas: Programmā Python ģeneratoriem ir iepriekš definētas funkcijas, piemēram, next(), iter() un padodas, lai atvieglotu to darbību.
  4. Pauzes un atsākšanas funkcija: Strādājot pie sarežģītiem algoritmiem, varat izmantot funkciju “raža”, lai apturētu un atsāktu ģeneratoru darbību.

Python ģeneratorus var izveidot un izmantot dažādos veidos. Mēs tālāk sadalīsim šo sadaļu, lai parādītu tās ieviešanu, izmantojot dažādus piemērus. Vispirms apskatīsim pamata sintaksi:



def funkcijas_nosaukums ( ) :
raža izteiksme

'Def' definē funkciju, un 'raža' tiek izmantota, lai izveidotu funkciju 'ģenerators'. Taču arī cita metode palīdz izveidot ģeneratoru, izmantojot tikai vienas rindas izteiksmes.



Ģeneratora funkcija virknes iegūšanai

Definēsim ģeneratora funkciju, lai iegūtu kādu vērtību:





def ģenerators ( ) :
raža 'Šis ir ģenerators'
priekš vērtību iekšā ģenerators ( ) :
drukāt ( vērtību )

Kad mēs to atkārtojam, izmantojot cilpu “for”, programma ģenerē norādītās vērtības, kuras varat izdrukāt, izmantojot funkciju “print”.



Ģeneratora funkcija skaitītāja izveidošanai

Šī programma ir piemērs ģeneratora funkcijai, lai ģenerētu skaitļu secību:

def mans_ģenerators ( n ) :
skaitītājs = 0
kamēr skaitītājs < n:
raža skaitītājs
skaitītājs + = 1
priekš skaitītājs iekšā mans_ģenerators ( 10 ) :
drukāt ( skaitītājs )

Piemēram, ja ievade ir 10, apkopojot šo kodu, jūs iegūsit vērtības no 0 līdz 9.

Fibonači sērija, izmantojot ģeneratora funkciju

Tagad izmantosim Fibonači sēriju, kas ir visvienkāršākā programmēšanas sērija:

def sērija_fibonači ( ierobežojums ) :
i , j = 0 , 1
kamēr i < ierobežojums:
raža i
i , j = j , i + j

a = sērija_fibonači ( 6 )

drukāt ( Nākamais ( a ) )
drukāt ( Nākamais ( a ) )
drukāt ( Nākamais ( a ) )
drukāt ( Nākamais ( a ) )
drukāt ( Nākamais ( a ) )
drukāt ( Nākamais ( a ) )

Mēs iegūsim sēriju šādi, palaižot kodu:

Vispirms izveidojiet objektu ar nosaukumu “a” un izsauciet funkciju “ģenerators”, kā argumentu izmantojot vajadzīgo ievadi.

Nākamais() atslēgvārds ir manuāls iterators. Katru reizi, kad mēs izmantojam nākamo (a), tas atkārtojas vairāk nekā vienu “a” vērtību. Tomēr mēs varam izmantot cilpu “for”, lai uzreiz izdrukātu visas “a” vērtības, kā parādīts šajā piemērā:

Funkcijas next() vietā tiek izmantota cilpa “for”:

def sērija_fibonači ( ierobežojums ) :
i , j = 0 , 1
kamēr i < ierobežojums:
raža i
i , j = j , i + j

a = sērija_fibonači ( 6 )
priekš vērtību iekšā a :
drukāt ( vērtību )

Koda palaišanas rezultāts neatšķirsies, jo tā ir alternatīva iepriekšējās programmas rakstīšanas metode:

Kas ir ģeneratora izteiksmes programmā Python?

Python ģeneratora izteiksmes ir veids, kā īsi izveidot “ģeneratora” funkcijas, izmantojot lineāras izteiksmes. Šeit ir vienkārša sintakse:

( izteiksme priekš mainīgs iekšā atkārtojams ja stāvokli )

Piemēram, izveidojiet ģeneratora izteiksmi, lai aprēķinātu nepāra skaitļu kvadrātus no 0 līdz “n”, ja ievades vērtība ir “n”.

nepāra_kvadrāti = ( x * x priekš x iekšā diapazons ( 10 ) ja x % 2 != 0 )
priekš vērtību iekšā odd_quares:
drukāt ( vērtību )

Iepriekšējais kods dod šādu rezultātu:

Secinājums

Tas viss attiecas uz dažādām Python ģeneratoru izveides un izmantošanas metodēm. Mēs izskaidrojām visu par Python ģeneratora izteiksmēm. Jums vajadzētu izmantot šīs izteiksmes, ja apsverat ģeneratoru izmantošanu kādā no saviem projektiem, jo ​​tie ir efektīvāki visos programmēšanas aspektos.