Python

Python Generator

Python Generator
I dette emne lærer vi Python Generator.

Definition: En generator er som en normal funktion, der genererer en række værdier ved hjælp af udbytte nøgleord. Det returnerer et objekt ad gangen. Det bruger internt en iterator. For at få adgang til det næste element Næste() funktionen bruges, eller vi kan bruge den til en løkke. Hvis vi forsøger at få adgang til værdien uden for området, hæver det a StopIteration fejl.

Vi vil se nogle eksempler for at forstå bedre

Eks: generatorfunktion til værdiområde

def range_fun (n):
x = 0
mens x < n:
udbytte x
x + = 1
y = rækkevidde (3)
#call ved hjælp af for loop
print ('Generer værdier ved hjælp af næste () metode')
til jeg i rækkevidde (3):
udskrive (i)
#call generator ved hjælp af næste metode
print ('Generer værdier ved hjælp af loop-metoden')
udskriv (næste (y))
udskriv (næste (y))
udskriv (næste (y))
udskriv (næste (y)) # Undtagelse med stop-gentagelse hæves

Eks: Generatorfunktion til Fibonacci-serien

def fib_fun (n):
x, y = 0, 1
mens x < n:
udbytte x
x, y = y, x + y
z = fib_fun (6) #generatorobjekt
print ('Generer værdier ved hjælp af næste () metode')
udskriv (næste (z))
udskriv (næste (z))
udskriv (næste (z))
udskriv (næste (z))
udskriv (næste (z))
udskriv (næste (z))
print ('Generer værdier ved hjælp af loop-metoden')
for jeg i fib_fun (6):
udskrive (i)

Eks: Generatorfunktion til oprettelse af række af værdier givet start- og slutværdier.

def my_range (start, slut):
nuværende = start
mens det er aktuelt < end:
udbyttestrøm
nuværende + = 1
print ('Generer værdier ved hjælp af næste () metode')
nums = min_range (1,5)
udskriv (næste (numre))
udskriv (næste (numre))
udskriv (næste (nums))
udskriv (næste (numre))
print ('Generer værdier ved hjælp af loop-metoden')
for num i min_range (1,5):
print (num)

Eks: Generator til at multiplicere hvert tal (mindre end et tal) med et tal

def gen_mulby_num (max, num):
n = 0
mens n < max:
udbytte n * antal
n + = 1
for jeg i gen_mulby_num (5,3):
udskrive (i)

Eks: Generator til at finde terning til værdiområde

def gen_mulby_num (max, num):
n = 0
mens n < max:
udbytte n * antal
n + = 1
for jeg i gen_mulby_num (5,3):
udskrive (i)

Eks: flere generatorer: find firkanten af ​​lige tal genereret fra et tal

Generator 1: generer lige værdier fra et givet nummer

Generator 2: generer kvadrattal fra generator1-værdier

def gen_even (m):
n = 0
mens n < m:
hvis n% 2 == 0:
udbytte n
n + = 2
def gen_square (nums):
for num in nums:
udbytte 2 * antal
for n i gen_square (gen_even (15)):
print (n)


Eks: Flere generatorer: Opret fibnacci-serier og tilføj værdi 10 hvert nummer.

Generator1: genererer Fibonacci-serier fra et givet nummer

Generator2: tilføj hvert nummer med 10 fra generator1

def gen_fib (n):
x, y = 0, 1
mens x < n:
udbytte x
x, y = y, x + y
def gen_add_10 (nums):
for num in nums:
udbytte 10 + antal
for n i gen_add_10 (gen_fib (5)):
print (n)


Generatorforståelser:

Generatorforståelser svarer til listeforståelser, hvor listen bruger firkantede parenteser; dette bruger normal parentes.

Eks:

nums = (i for i inden for rækkevidde (10))
print (type (nums))
udskriv (liste (nums))

Forskel mellem generator og normal funktion:

  1. En generator giver værdier ved hjælp af udbytte nøgleord, hvor normal funktion bruger Vend tilbage nøgleord
  2. Generator starter fra, hvor den stoppede, når den blev ringet op næste gang. Den normale funktion udfører alle udsagn hver gang.
  3. Generator gemmer hukommelse, da den returnerer en værdi ad gangen. Så vi kan bruge det til at generere uendelige værdier.

Konklusion:

Generator er meget nyttigt, når vi håndterer store / store data. På et givet tidspunkt indeholder det kun et enkelt stykke data snarere end hele data. Generatorkoncept betragtes som et avanceret koncept i python.

Kæmp om Wesnoth-vejledning
Slaget om Wesnoth er et af de mest populære open source-strategispil, som du kan spille på dette tidspunkt. Ikke kun har dette spil været under udvikl...
0 A.D. Vejledning
Ud af de mange strategispil derude, 0 A.D. formår at skille sig ud som en omfattende titel og et meget dybt, taktisk spil på trods af at det er open s...
Unity3D Tutorial
Introduktion til Unity 3D Unity 3D er en kraftfuld spiludviklingsmotor. Det er cross platform, det er det giver dig mulighed for at oprette spil til m...