Piton

Python Generator

Python Generator
Ebben a témában megtanuljuk a Python Generator programot.

Meghatározás: A generátor olyan, mint egy normál függvény, amely értéktartományt állít elő a hozam kulcsszó. Egyszerre egy objektumot ad vissza. Belsőleg iterátort használ. A következő elem elérése következő() függvényt használjuk, vagy használhatjuk mert egy hurok. Ha megpróbálunk elérni a tartományon kívüli értéket, akkor felveti a StopIteration hiba.

Látunk néhány példát a jobb megértéshez

Volt: generátor funkció az értéktartományhoz

def range_fun (n):
x = 0
míg x < n:
hozam x
x + = 1
y = hatótávolság (3)
#call for loop használatára
print ('Értékek előállítása a következő () módszerrel')
i-re a tartomány_teljesítményben (3):
nyomtatás (i)
#call generátor a következő módszerrel
print ('Értékek előállítása a ciklus módszerével')
nyomtatás (következő (y))
nyomtatás (következő (y))
nyomtatás (következő (y))
nyomtatás (következő (y)) # Megáll az Iteráció leállítása kivétel

Volt: Generátor funkció a Fibonacci sorozathoz

def fib_fun (n):
x, y = 0, 1
míg x < n:
hozam x
x, y = y, x + y
z = fib_fun (6) #generator objektum
print ('Értékek előállítása a következő () módszerrel')
nyomtatás (következő (z))
nyomtatás (következő (z))
nyomtatás (következő (z))
nyomtatás (következő (z))
nyomtatás (következő (z))
nyomtatás (következő (z))
print ('Értékek előállítása a ciklus módszerével')
i-re a fib_fun (6) -ben:
nyomtatás (i)

Volt: Generátor funkció az adott kezdő és végérték értéktartományának létrehozásához.

def saját_tartomány (kezdet, vég):
áram = kezdet
míg a jelenlegi < end:
hozamáram
áram + = 1
print ('Értékek előállítása a következő () módszerrel')
nums = saját tartomány (1,5)
nyomtatás (következő (számok))
nyomtatás (következő (számok))
nyomtatás (következő (számok))
nyomtatás (következő (számok))
print ('Értékek előállítása a ciklus módszerével')
számra a saját tartományomban (1,5):
nyomtatás (szám)

Volt: Generátor, hogy minden számot (kevesebb, mint egy számot) megszorozzon egy számmal

def gen_mulby_num (max, szám):
n = 0
míg n < max:
hozam n * szám
n + = 1
i-re a gen_mulby_num (5,3) -ban:
nyomtatás (i)

Volt: Generátor az értéktartomány kocka megtalálásához

def gen_mulby_num (max, szám):
n = 0
míg n < max:
hozam n * szám
n + = 1
i-re a gen_mulby_num (5,3) -ban:
nyomtatás (i)

Volt: több generátor: keresse meg a számból generált páros számok négyzetét

1. generátor: páros értékeket generál egy adott számból

2. generátor: generál négyzetszámokat a generator1 értékekből

def gen_even (m):
n = 0
míg n < m:
ha n% 2 == 0:
hozam n
n + = 2
def gen_square (számok):
a szám számokban:
hozam 2 * sz
n-re a gen_square-ben (gen_even (15)):
nyomtatás (n)


Volt: Több generátor: hozzon létre fibnacci sorozatokat, és adjon hozzá 10 értéket minden számhoz.

Generator1: adott számból generál fibonacci sorozatokat

Generátor2: adjon hozzá minden számot 10-gyel az 1. generátorból

def gen_fib (n):
x, y = 0, 1
míg x < n:
hozam x
x, y = y, x + y
def gen_add_10 (számok):
a szám számokban:
hozam 10 + szám
n esetén gen_add_10 (gen_fib (5)):
nyomtatás (n)


Generátor megértése:

A generátor megértése hasonló a lista megértéséhez, ahol a lista szögletes zárójelet használ; ez normál zárójeleket használ.

Volt:

nums = (i az i-re a (10) tartományban)
nyomtatás (típus (összegek))
nyomtatás (lista (számok))

A generátor és a normál működés közötti különbség:

  1. Egy generátor értékeket ad meg hozam kulcsszó, ahol a normál függvény a Visszatérés kulcsszó
  2. A generátor onnan indul, ahol leállt, amikor legközelebb hívták. A normál függvény minden utasítást minden alkalommal végrehajt.
  3. A Generator memóriát takarít meg, mivel egyszerre egy értéket ad vissza. Tehát végtelen értékek előállítására használhatjuk fel.

Következtetés:

A Generator nagyon hasznos, ha hatalmas / nagy adatokat kezelünk. Adott időpontban csak egyetlen adatot tartalmaz, nem pedig teljes adatot. A generátorok koncepciója a Python fejlett koncepciójának számít.

SuperTuxKart Linuxhoz
A SuperTuxKart egy nagyszerű cím, amelynek célja, hogy ingyenesen hozza el a Mario Kart élményét Linux rendszerén. Elég kihívást jelentő és szórakozta...
Csata a Wesnoth bemutatóért
A Battle for Wesnoth az egyik legnépszerűbb nyílt forráskódú stratégiai játék, amelyet jelenleg játszhatsz. Ez a játék nem csak nagyon hosszú ideje fe...
0 A.D. Bemutató
A sok stratégiai játék közül 0 A.D. átfogó címként és nagyon mély, taktikus játékként képes kiemelkednie annak ellenére, hogy nyílt forráskódú. A játé...