Kaip sukurti ir naudoti Python generatorius

Kaip Sukurti Ir Naudoti Python Generatorius



Dirbant kūrėju dažnai reikia dirbti su daug nereikšmingų duomenų reikšmių. Šių verčių saugojimas užima daug atminties, todėl sumažėja kodo efektyvumas. Tačiau Python galite naudoti generatorius, kad išvengtumėte šių nuostolių.

Naudodami generatorius galite masiškai sukurti tam tikros sekos reikšmes, neišsaugodami jų atmintyje. Be to, funkcija „generatorius“ sukuria objektą, kuris generuoja reikšmes, kai jis kartojamas. Taigi, jei norite susipažinti su Python generatoriais, ši pamoka skirta jums. Čia paaiškinsime, kaip sukurti ir naudoti Python generatorius.

Kaip sukurti ir naudoti Python generatorius

„Python“ generatoriai naudojami norint efektyviai dirbti su duomenų sekomis, daugiausia dirbant su dideliais arba beveik nesibaigiančiais duomenų rinkiniais. Python generatorių pranašumai yra šie:







  1. Glaustai: Galite lengvai apibrėžti generatorius glaustai, o tai pagerina kodo skaitomumą.
  2. Efektyvi atmintis: Jie generuoja vieną vertę vienu metu, o tai sunaudoja mažiau atminties ir pagerina efektyvumą.
  3. Integruotos funkcijos: „Python“ generatoriai turi iš anksto nustatytas funkcijas, tokias kaip next(), iter() ir duoda, kad palengvintų jų darbą.
  4. Pristabdymo ir atnaujinimo funkcija: Dirbdami su sudėtingais algoritmais, galite naudoti „derliaus“ funkciją, kad pristabdytumėte ir atnaujintumėte generatorių darbą.

„Python“ generatorius galite kurti ir naudoti įvairiais būdais. Toliau padalinsime šį skyrių, kad parodytume jo įgyvendinimą naudodami skirtingus pavyzdžius. Pirmiausia pažvelkime į pagrindinę sintaksę:



def funkcijos_pavadinimas ( ) :
derlius išraiška

„Def“ apibrėžia funkciją, o „išeiga“ naudojama „generatoriaus“ funkcijai sukurti. Tačiau kitas metodas taip pat padeda sukurti generatorių naudojant tik vienos eilutės išraiškas.



Generatoriaus funkcija, skirta eilutei sukurti

Apibrėžkime generatoriaus funkciją, kad gautume tam tikrą vertę:





def generatorius ( ) :
derlius 'Tai generatorius'
dėl vertė in generatorius ( ) :
spausdinti ( vertė )

Kai kartojame jį naudodami „for“ kilpą, programa sugeneruoja nurodytas reikšmes, kurias galite atspausdinti naudodami „spausdinimo“ funkciją.



Generatoriaus funkcija skaitikliui sukurti

Toliau pateikta programa yra pavyzdys, kaip generatoriaus funkcija generuoja skaičių seką:

def mano_generatorius ( n ) :
skaitiklis = 0
kol skaitiklis < n:
derlius skaitiklis
skaitiklis + = 1
dėl skaitiklis in mano_generatorius ( 10 ) :
spausdinti ( skaitiklis )

Pavyzdžiui, jei įvestis yra 10, sudarant šį kodą gausite reikšmes nuo 0 iki 9.

Fibonacci serija naudojant generatoriaus funkciją

Dabar naudokime Fibonacci seriją, kuri yra pati pagrindinė programavimo serija:

def serija_fibonacci ( riba ) :
i , j = 0 , 1
kol i < riba:
derlius i
i , j = j , i + j

a = serija_fibonacci ( 6 )

spausdinti ( Kitas ( a ) )
spausdinti ( Kitas ( a ) )
spausdinti ( Kitas ( a ) )
spausdinti ( Kitas ( a ) )
spausdinti ( Kitas ( a ) )
spausdinti ( Kitas ( a ) )

Vykdydami kodą gausime seriją taip:

Pirmiausia sukurkite objektą pavadinimu „a“ ir iškvieskite „generatoriaus“ funkciją naudodami norimą įvestį kaip argumentą.

Kitas() raktinis žodis yra rankinis iteratorius. Kiekvieną kartą, kai naudojame next(a), jis kartojasi per vieną „a“ reikšmę. Tačiau galime naudoti „for“ kilpą, kad iš karto išspausdintume visas „a“ reikšmes, kaip parodyta šiame pavyzdyje:

„For“ ciklo naudojimas vietoj funkcijos next():

def serija_fibonacci ( riba ) :
i , j = 0 , 1
kol i < riba:
derlius i
i , j = j , i + j

a = serija_fibonacci ( 6 )
dėl vertė in a :
spausdinti ( vertė )

Kodo paleidimo rezultatas nesiskiria, nes tai yra alternatyvus ankstesnės programos rašymo būdas:

Kas yra „Python“ generatoriaus išraiškos?

Python generatoriaus išraiškos yra būdas glaustai sukurti „generatoriaus“ funkcijas naudojant tiesines išraiškas. Štai paprasta sintaksė:

( išraiška dėl kintamasis in kartojamas jeigu sąlyga )

Pavyzdžiui, sukurkite generatoriaus išraišką, kad apskaičiuotumėte nelyginių skaičių kvadratus nuo 0 iki „n“, kai „n“ yra įvesties reikšmė.

nelyginiai_kvadratai = ( x * x dėl x in diapazonas ( 10 ) jeigu x % 2 != 0 )
dėl vertė in odd_quares:
spausdinti ( vertė )

Ankstesnis kodas duoda tokį rezultatą:

Išvada

Tai viskas apie skirtingus Python generatorių kūrimo ir naudojimo būdus. Mes paaiškinome viską apie Python generatoriaus išraiškas. Turėtumėte naudoti šias išraiškas, jei ketinate naudoti generatorius bet kuriame savo projekte, nes jie yra efektyvesni visais programavimo aspektais.