Python

Python Generator

Python Generator
V tej temi se bomo naučili Python Generator.

Definicija: Generator je kot običajna funkcija, ki generira vrsto vrednosti z uporabo donos ključna beseda. Vrne en predmet naenkrat. Interno uporablja iterator. Za dostop do naslednjega elementa Naslednji() funkcija ali pa jo lahko uporabimo za zanko. Če poskušamo dostopati do vrednosti zunaj obsega, se poveča a StopIteration napaka.

Videli bomo nekaj primerov za boljše razumevanje

Primer: funkcija generatorja za obseg vrednosti

def range_fun (n):
x = 0
medtem ko x < n:
donos x
x + = 1
y = obseg_zabave (3)
#call z uporabo zanke
print ('Ustvari vrednosti z uporabo metode next ()')
za i v range_fun (3):
natisni (i)
#call generator z naslednjo metodo
print ('Ustvari vrednosti z uporabo metode zanke')
natisni (naslednji (y))
natisni (naslednji (y))
natisni (naslednji (y))
print (naslednji (y)) # Pojavila se bo izjema Stop Iteration

Napr: Funkcija generatorja za serijo Fibonacci

def fib_fun (n):
x, y = 0, 1
medtem ko x < n:
donos x
x, y = y, x + y
z = fib_fun (6) # objekt generatorja
print ('Ustvari vrednosti z uporabo metode next ()')
natisni (naslednji (z))
natisni (naslednji (z))
natisni (naslednji (z))
natisni (naslednji (z))
natisni (naslednji (z))
natisni (naslednji (z))
print ('Ustvari vrednosti z uporabo metode zanke')
za i v fib_fun (6):
natisni (i)

Napr: Generatorska funkcija za ustvarjanje obsega vrednosti glede na začetno in končno vrednost.

def my_range (začetek, konec):
tok = začetek
medtem ko je trenutna < end:
donosni tok
tok + = 1
print ('Ustvari vrednosti z uporabo metode next ()')
nums = moj_razpon (1,5)
tiskanje (naslednje (številke))
tiskanje (naslednje (številke))
tiskanje (naslednje (številke))
tiskanje (naslednje (številke))
print ('Ustvari vrednosti z uporabo metode zanke')
za num v my_range (1,5):
natisni (številka)

Napr: Generator za množenje vsakega števila (manjšega od števila) s številom

def gen_mulby_num (največ, število):
n = 0
medtem ko je n < max:
donos n * štev
n + = 1
za i v gen_mulby_num (5,3):
natisni (i)

Napr: Generator za iskanje kocke za obseg vrednosti

def gen_mulby_num (največ, število):
n = 0
medtem ko je n < max:
donos n * štev
n + = 1
za i v gen_mulby_num (5,3):
natisni (i)

Napr: več generatorjev: poiščite kvadrat parnih števil, ustvarjenih iz števila

Generator 1: generiranje parnih vrednosti iz danega števila

Generator 2: ustvari kvadratna števila iz vrednosti generator1

def gen_even (m):
n = 0
medtem ko je n < m:
če je n% 2 == 0:
donos n
n + = 2
def gen_square (številke):
za num v nums:
donos 2 * štev
za n v gen_square (gen_even (15)):
natisni (n)


Napr: Več generatorjev: ustvarite fibnaccijeve nize in dodajte vrednost 10 za vsako številko.

Generator1: generira fibonačijeve nize iz danega števila

Generator2: dodajte vsako število za 10 iz generator1

def gen_fib (n):
x, y = 0, 1
medtem ko x < n:
donos x
x, y = y, x + y
def gen_add_10 (nums):
za num v nums:
donos 10 + štev
za n v gen_add_10 (gen_fib (5)):
natisni (n)


Razumevanja generatorja:

Razumevanja generatorja so podobna razumevanjem seznama, kjer seznam uporablja oglate oklepaje; ta uporablja običajne oklepaje.

Napr:

nums = (i za i v območju (10))
tiskanje (vrsta (številke))
natisni (seznam (številke))

Razlika med generatorjem in normalno funkcijo:

  1. Generator podaja vrednosti z uporabo donos ključna beseda, kjer običajna funkcija uporablja vrnitev ključna beseda
  2. Generator se zažene od mesta, kjer se je ob naslednjem klicu ustavil. Običajna funkcija vsakič izvrši vse stavke.
  3. Generator shrani pomnilnik, saj vrne eno vrednost naenkrat. Tako ga lahko uporabimo za ustvarjanje neskončnih vrednosti.

Zaključek:

Generator je zelo koristen pri obdelavi ogromnih / velikih podatkov. V določenem trenutku vsebuje le en sam del podatkov in ne celotnih podatkov. Koncept generatorjev velja za napreden koncept v pythonu.

Najboljše laboratorijske igre Oculus App
Če ste lastnik slušalk Oculus, morate biti seznanjeni s stranskim nalaganjem. Sideloading je postopek namestitve vsebine, ki ni shranjena v slušalke. ...
10 najboljših iger za igranje v Ubuntuju
Platforma Windows je bila ena izmed prevladujočih platform za igre na srečo zaradi velikega odstotka iger, ki se danes razvijajo za naravno podporo si...
5 najboljših arkadnih iger za Linux
Dandanes so računalniki resni stroji, ki se uporabljajo za igre na srečo. Če ne boste mogli dobiti novega visokega rezultata, boste vedeli, kaj mislim...