Pytonorm

Python Generator

Python Generator
I det här ämnet lär vi oss Python Generator.

Definition: En generator är som en normal funktion som genererar en rad värden med hjälp av avkastning nyckelord. Det returnerar ett objekt i taget. Den använder internt en iterator. För att komma åt nästa element Nästa() funktionen används, eller så kan vi använda den för en runda. Om vi ​​försöker komma åt värdet utanför intervallet höjer det a StopIteration fel.

Vi kommer att se några exempel för att förstå bättre

Ex: generatorfunktion för värden

def range_fun (n):
x = 0
medan x < n:
utbyte x
x + = 1
y = intervallfunktion (3)
#call använder för loop
skriv ut ('Skapa värden med nästa () metod')
för jag inom range_fun (3):
skriva ut (i)
#call generator med nästa metod
print ('Generera värden med hjälp av loop-metoden')
skriv ut (nästa (y))
skriv ut (nästa (y))
skriva ut (nästa (y))
skriv ut (nästa (y)) # Undantag för stopp-iterering kommer att höjas

Ex: Generatorfunktion för Fibonacci-serien

def fib_fun (n):
x, y = 0, 1
medan x < n:
utbyte x
x, y = y, x + y
z = fib_fun (6) #generator-objekt
skriv ut ('Skapa värden med nästa () metod')
skriv ut (nästa (z))
skriv ut (nästa (z))
skriv ut (nästa (z))
skriv ut (nästa (z))
skriv ut (nästa (z))
skriv ut (nästa (z))
print ('Generera värden med hjälp av loop-metoden')
för jag i fib_fun (6):
skriva ut (i)

Ex: Generatorfunktion för att skapa intervall av värden med start- och slutvärden.

def my_range (start, slut):
aktuell = start
medan den är aktuell < end:
avkastningsström
nuvarande + = 1
skriv ut ('Skapa värden med nästa () metod')
nums = mitt_område (1,5)
skriv ut (nästa (siffror))
skriv ut (nästa (siffror))
skriv ut (nästa (siffror))
skriv ut (nästa (siffror))
print ('Generera värden med hjälp av loop-metoden')
för num i mitt_område (1,5):
skriva ut (num)

Ex: Generator för att multiplicera varje nummer (mindre än ett nummer) med ett nummer

def gen_mulby_num (max, num):
n = 0
medan n < max:
utbyte n * antal
n + = 1
för jag i gen_mulby_num (5,3):
skriva ut (i)

Ex: Generator för att hitta kub för värden

def gen_mulby_num (max, num):
n = 0
medan n < max:
utbyte n * antal
n + = 1
för jag i gen_mulby_num (5,3):
skriva ut (i)

Ex: flera generatorer: hitta kvadraten för jämna nummer som genereras från ett nummer

Generator 1: generera jämna värden från ett givet nummer

Generator 2: generera kvadratnummer från generator1-värden

def gen_even (m):
n = 0
medan n < m:
om n% 2 == 0:
utbyte n
n + = 2
def gen_square (nums):
för num in nums:
utbyte 2 * antal
för n i gen_square (gen_even (15)):
skriva ut (n)


Ex: Flera generatorer: skapa fibnacci-serier och lägg till värde 10 varje nummer.

Generator1: genererar FIPS-serie från ett givet nummer

Generator2: lägg till varje nummer med 10 från generator1

def gen_fib (n):
x, y = 0, 1
medan x < n:
utbyte x
x, y = y, x + y
def gen_add_10 (nums):
för num in nums:
utbyte 10 + antal
för n i gen_add_10 (gen_fib (5)):
skriva ut (n)


Generatorförståelser:

Generatorförståelser liknar listförståelser där listan använder hakparenteser; detta använder normal parentes.

Ex:

nums = (i för i inom intervallet (10))
skriva ut (typ (nums))
skriv ut (lista (nummer))

Skillnad mellan generator och normal funktion:

  1. En generator tillhandahåller värden med avkastning nyckelord där normal funktion använder lämna tillbaka nyckelord
  2. Generatorn startar från den plats där den stannade vid anrop nästa gång. Den normala funktionen utför alla uttalanden varje gång.
  3. Generator sparar minne eftersom det returnerar ett värde åt gången. Så vi kan använda den för att skapa oändliga värden.

Slutsats:

Generator är till stor hjälp när vi hanterar stora / stora data. Vid en viss tidpunkt rymmer den bara en enda bit data snarare än hel data. Generatorkoncept betraktas som ett avancerat koncept inom python.

Hur man använder GameConqueror Cheat Engine i Linux
Artikeln täcker en guide om hur du använder GameConqueror-fuskmotorn i Linux. Många användare som spelar spel på Windows använder ofta applikationen "...
Bästa spelkonsolemulatorer för Linux
Den här artikeln listar populära spelkonsolemuleringsprogram som finns tillgängliga för Linux. Emulation är ett mjukvarukompatibilitetsskikt som emule...
Bästa Linux Distros för spel 2021
Linux-operativsystemet har kommit långt från sitt ursprungliga, enkla, serverbaserade utseende. Detta operativsystem har förbättrats enormt de senaste...