Python

Generátor Pythonu

Generátor Pythonu
V tejto téme sa naučíme generátor Pythonu.

Definícia: Generátor je ako normálna funkcia, ktorá generuje celý rad hodnôt pomocou znaku výnos kľúčové slovo. Vracia po jednom objekte. Vnútorne používa iterátor. Prístup k ďalšiemu prvku Ďalšie() funkcia je použitá, alebo ju môžeme použiť pre slučka. Ak sa pokúsime získať prístup k hodnote mimo rozsahu, zvýši sa a StopIterácia chyba.

Uvidíme nejaký príklad na lepšie pochopenie

Príklad: funkcia generátora pre rozsah hodnôt

def range_fun (n):
x = 0
zatiaľ čo x < n:
výnos x
x + = 1
y = range_fun (3)
#call pomocou slučky for
print ('Generovať hodnoty pomocou metódy next ()')
pre i v range_fun (3):
tlač (i)
#call generátor pomocou ďalšej metódy
print ('Generovanie hodnôt pomocou metódy loop')
tlač (ďalšie (y))
tlač (ďalšie (y))
tlač (ďalšie (y))
print (next (y)) # Zobrazí sa výnimka Stop Iteration

Pr: Funkcia generátora pre sériu Fibonacci

def fib_fun (n):
x, y = 0, 1
zatiaľ čo x < n:
výnos x
x, y = y, x + y
z = fib_fun (6) #generator object
print ('Generovať hodnoty pomocou metódy next ()')
tlač (ďalšie (z))
tlač (ďalšie (z))
tlač (ďalšie (z))
tlač (ďalšie (z))
tlač (ďalšie (z))
tlač (ďalšie (z))
print ('Generovanie hodnôt pomocou metódy loop')
pre i vo fib_fun (6):
tlač (i)

Pr: Funkcia generátora na vytvorenie rozsahu hodnôt zadaných počiatočných a konečných hodnôt.

def my_range (začiatok, koniec):
prúd = štart
zatiaľ čo aktuálne < end:
výťažkový prúd
prúd + = 1
print ('Generovať hodnoty pomocou metódy next ()')
čísla = môj_rozsah (1,5)
tlač (ďalšie (čísla))
tlač (ďalšie (čísla))
tlač (ďalšie (čísla))
tlač (ďalšie (čísla))
print ('Generovanie hodnôt pomocou metódy loop')
pre počet v mojom rozsahu (1,5):
tlač (počet)

Pr: Generátor na vynásobenie každého čísla (menšieho ako číslo) číslom

def gen_mulby_num (max; počet):
n = 0
zatiaľ čo n < max:
výnos n * počet
n + = 1
pre i v gen_mulby_num (5,3):
tlač (i)

Pr: Generátor na nájdenie kocky pre rozsah hodnôt

def gen_mulby_num (max; počet):
n = 0
zatiaľ čo n < max:
výnos n * počet
n + = 1
pre i v gen_mulby_num (5,3):
tlač (i)

Pr: viac generátorov: vyhľadajte štvorček párnych čísel vygenerovaných z čísla

Generátor 1: generuje párne hodnoty z daného čísla

Generátor 2: vygenerujte štvorcové čísla z hodnôt generátora1

def gen_even (m):
n = 0
zatiaľ čo n < m:
ak n% 2 == 0:
výťažok n
n + = 2
def gen_square (čísla):
pre počet v číslach:
výťažok 2 * počet
pre n v gen_square (gen_even (15)):
tlač (n)


Pr: Viac generátorov: vytvorte sériu Fibnacciho a pridajte každému číslu hodnotu 10.

Generátor1: generuje fibonacciho sériu z daného čísla

Generátor2: sčítajte každé číslo z generátora1 o 10

def gen_fib (n):
x, y = 0, 1
zatiaľ čo x < n:
výnos x
x, y = y, x + y
def gen_add_10 (čísla):
pre počet v číslach:
výnos 10 + počet
pre n v gen_add_10 (gen_fib (5)):
tlač (n)


Pochopenie generátora:

Pochopenie generátora je podobné ako chápanie zoznamu, kde zoznam používa hranaté zátvorky; používa sa normálna zátvorka.

Pr:

nums = (i pre i v rozsahu (10))
tlač (typ (čísla))
tlač (zoznam (čísla))

Rozdiel medzi generátorom a normálnou funkciou:

  1. Generátor poskytuje hodnoty pomocou výnos kľúčové slovo, kde normálna funkcia používa návrat kľúčové slovo
  2. Generátor sa spustí od miesta, kde sa zastavil pri ďalšom volaní. Normálna funkcia vykoná všetky príkazy zakaždým.
  3. Generátor šetrí pamäť, pretože vracia jednu hodnotu po druhej. Môžeme ho teda použiť na generovanie nekonečných hodnôt.

Záver:

Generátor je veľmi užitočný, keď pracujeme s obrovskými / veľkými dátami. V danom čase uchováva iba jeden jediný údaj, a nie celé údaje. Koncept generátorov je považovaný za pokročilý koncept v pythone.

Hry Ako inštalovať a hrať Doom na Linuxe
Ako inštalovať a hrať Doom na Linuxe
Úvod do Doom Séria Doom vznikla v 90. rokoch po vydaní pôvodného Doomu. Bol to okamžitý hit a od tej doby herná séria získala množstvo ocenení a origi...
Hry Vulkan pre používateľov systému Linux
Vulkan pre používateľov systému Linux
S každou novou generáciou grafických kariet vidíme, že vývojári hier posúvajú hranice grafickej vernosti a prichádzajú o krok bližšie k fotorealizmu. ...
Hry OpenTTD vs Simutrans
OpenTTD vs Simutrans
Vytvorenie vlastnej simulácie dopravy môže byť zábavné, relaxačné a mimoriadne lákavé. Preto sa musíte uistiť, že vyskúšate čo najviac hier, aby ste n...