Sådan opretter og bruger du Python-generatorer

Sadan Opretter Og Bruger Du Python Generatorer



Mens du arbejder som udvikler, skal du ofte arbejde med mange ubetydelige dataværdier. Lagring af disse værdier bruger en del hukommelse, hvilket reducerer effektiviteten af ​​din kode. I Python kan du dog bruge generatorer til at undgå det tab.

Med generatorer kan du masseproducere værdierne af en bestemt sekvens uden at gemme dem helt i hukommelsen. Desuden skaber 'generator'-funktionen et objekt, som genererer værdier, når det gentages. Så hvis du vil have fingrene i Python-generatorer, er denne tutorial noget for dig. Her vil vi forklare, hvordan du opretter og bruger Python-generatorerne.

Sådan opretter og bruger du Python-generatorerne

Python-generatorer bruges til at arbejde effektivt med datasekvenserne, hovedsageligt når de håndterer store eller næsten uendelige datasæt. Fordelene ved Python-generatorer er:







  1. Kortfattet: Du kan nemt definere generatorerne på en kortfattet måde, hvilket forbedrer kodelæsbarheden.
  2. Hukommelseseffektiv: De genererer en enkelt værdi samtidigt, som bruger mindre hukommelse og forbedrer effektiviteten.
  3. Indbyggede funktioner: I Python har generatorer foruddefinerede funktioner som next(), iter() og yield for at lette deres arbejde.
  4. Pause og genoptag funktion: Mens du arbejder på komplekse algoritmer, kan du bruge funktionen 'udbytte' til at pause og genoptage driften af ​​generatorer.

Du kan oprette og bruge generatorer på forskellige måder i Python. Vi vil yderligere opdele dette afsnit for at demonstrere dets implementering ved hjælp af forskellige eksempler. Lad os først tage et kig på den grundlæggende syntaks:



def func_name ( ) :
udbytte udtryk

'Def' definerer en funktion, og 'yield' bruges til at bygge 'generator'-funktionen. En anden metode hjælper dog også med at skabe en generator, der kun bruger en-linjes udtryk.



Generatorfunktion til at give en streng

Lad os definere en generatorfunktion for at give en vis værdi:





def generator ( ) :
udbytte 'Dette er en generator'
til værdi i generator ( ) :
Print ( værdi )

Når vi itererer over det ved hjælp af en 'for'-løkke, genererer programmet de specificerede værdier, som du kan udskrive ved hjælp af 'print'-funktionen.



Generatorfunktion til at lave en tæller

Følgende program er eksemplet på generatorfunktionen til at generere en talsekvens:

def min_generator ( n ) :
tæller = 0
mens tæller < n:
udbytte tæller
tæller + = 1
til tæller i min_generator ( 10 ) :
Print ( tæller )

For eksempel, hvis input er 10, vil du få værdier fra 0 til 9 ved kompilering af denne kode.

Fibonacci-serien ved hjælp af generatorfunktionen

Lad os nu bruge Fibonacci-serien, som er den mest grundlæggende serie inden for programmering:

def series_fibonacci ( begrænse ) :
jeg , j = 0 , 1
mens jeg < begrænse:
udbytte jeg
jeg , j = j , i + j

-en = series_fibonacci ( 6 )

Print ( Næste ( -en ) )
Print ( Næste ( -en ) )
Print ( Næste ( -en ) )
Print ( Næste ( -en ) )
Print ( Næste ( -en ) )
Print ( Næste ( -en ) )

Vi får serien som følger ved at køre koden:

Først skal du oprette et objekt med navnet 'a' og kalde funktionen 'generator' med det ønskede input som argument.

Næste() nøgleordet er en manuel iterator. Hver gang vi bruger næste(a), gentager den en værdi af 'a'. Vi kan dog bruge 'for'-løkken til at udskrive alle værdierne af 'a' på én gang som vist i følgende eksempel:

Brug af 'for' loop i stedet for funktionen next():

def series_fibonacci ( begrænse ) :
jeg , j = 0 , 1
mens jeg < begrænse:
udbytte jeg
jeg , j = j , i + j

-en = series_fibonacci ( 6 )
til værdi i en :
Print ( værdi )

Resultatet af at køre koden vil ikke afvige, fordi det er en alternativ metode til at skrive det forrige program:

Hvad er generatorudtryk i Python?

Python-generatorudtryk er en måde at skabe 'generator'-funktionerne kortfattet ved hjælp af lineære udtryk. Her er den simple syntaks:

( udtryk til variabel i iterable hvis tilstand )

Opret for eksempel et generatorudtryk for at beregne kvadraterne af ulige tal fra 0 til 'n', når 'n' er inputværdien.

ulige_kvadrater = ( x * x til x i rækkevidde ( 10 ) hvis x % 2 != 0 )
til værdi i ulige_kvadrater:
Print ( værdi )

Den foregående kode giver følgende resultat:

Konklusion

Det hele handler om de forskellige metoder til at skabe og bruge Python-generatorerne. Vi forklarede alt om Python-generatorudtrykkene. Du bør bruge disse udtryk, hvis du overvejer at bruge generatorer i et af dine projekter, fordi de er mere effektive i alle programmeringsaspekter.