„Python“

„Python“ generatorius

„Python“ generatorius
Šioje temoje sužinosime „Python Generator“.

Apibrėžimas: Generatorius yra tarsi įprasta funkcija, kuri sukuria reikšmių diapazoną naudodama derlius raktinis žodis. Jis grąžina po vieną objektą. Viduje jis naudoja iteratorių. Norėdami pasiekti kitą elementą Kitas() naudojama funkcija arba mes galime ją naudoti dėl kilpa. Jei bandysime pasiekti reikšmę už diapazono ribų, ji pakels a StopIteration klaida.

Pamatysime pavyzdį, kaip geriau suprasti

Pvz .: generatoriaus funkcija reikšmių diapazonui

def diapazonas_fun (n):
x = 0
o x < n:
derlius x
x + = 1
y = diapazonas_fun (3)
#call using for loop
spausdinti ('Generuoti reikšmes naudojant kitą () metodą')
i i intervale_fun (3):
spausdinti (i)
#call generator naudojant kitą metodą
spausdinti ('Generuoti reikšmes naudojant ciklo metodą')
spausdinti (kitas (y))
spausdinti (kitas (y))
spausdinti (kitas (y))
spausdinti (kitas (y)) # Bus padidinta Stop Iteration išimtis

Pvz: „Fibonacci“ serijos generatoriaus funkcija

def fib_fun (n):
x, y = 0, 1
o x < n:
derlius x
x, y = y, x + y
z = fib_fun (6) # generatorius objektas
spausdinti ('Generuoti reikšmes naudojant kitą () metodą')
spausdinti (kitas (z))
spausdinti (kitas (z))
spausdinti (kitas (z))
spausdinti (kitas (z))
spausdinti (kitas (z))
spausdinti (kitas (z))
spausdinti ('Generuoti reikšmes naudojant ciklo metodą')
i i fib_fun (6):
spausdinti (i)

Pvz: Generatoriaus funkcija kuriant reikšmių diapazoną, nurodant pradžios ir pabaigos reikšmes.

def my_range (pradžia, pabaiga):
srovė = pradžia
o srovė < end:
derlingumo srovė
srovė + = 1
spausdinti ('Generuoti reikšmes naudojant kitą () metodą')
nums = mano_diapazonas (1,5)
spausdinti (kitas (skaičiai))
spausdinti (kitas (skaičiai))
spausdinti (kitas (skaičiai))
spausdinti (kitas (skaičiai))
spausdinti ('Generuoti reikšmes naudojant ciklo metodą')
už skaičių mano_diapazone (1,5):
spausdinti (skaičius)

Pvz: Generatorius kiekvieną skaičių (mažesnį nei skaičius) padauginti iš skaičiaus

def gen_mulby_num (maks., skaičius):
n = 0
o n < max:
derlius n * skaičius
n + = 1
i i gen_mulby_num (5,3):
spausdinti (i)

Pvz: Generatorius, norėdamas rasti reikšmių diapazono kubą

def gen_mulby_num (maks., skaičius):
n = 0
o n < max:
derlius n * skaičius
n + = 1
i i gen_mulby_num (5,3):
spausdinti (i)

Pvz: keli generatoriai: raskite iš skaičiaus sugeneruotų lyginių skaičių kvadratą

1 generatorius: generuokite lygines reikšmes iš nurodyto skaičiaus

2 generatorius: generuokite kvadratinius skaičius iš generatoriaus1 reikšmių

def gen_even (m):
n = 0
o n < m:
jei n% 2 == 0:
derlius n
n + = 2
def gen_square (skaičiai):
už skaičių skaičiais:
derlius 2 * sk
už n gen_square (gen_even (15)):
spausdinti (n)


Pvz: Keli generatoriai: sukurkite „fibnacci“ serijas ir pridėkite 10 kiekvieno numerio vertės.

Generator1: generuoja fibonacci serijas iš nurodyto skaičiaus

Generator2: pridėkite kiekvieną skaičių 10 iš generatoriaus1

def gen_fib (n):
x, y = 0, 1
o x < n:
derlius x
x, y = y, x + y
def gen_add_10 (skaičiai):
už skaičių skaičiais:
derlius 10 + skait
už n gen_add_10 (gen_fib (5)):
spausdinti (n)


Generatoriaus supratimas:

Generatoriaus supratimas yra panašus į sąrašo supratimą, kai sąraše naudojami laužtiniai skliaustai; tam naudojama įprasta skliaustai.

Pvz:

nums = (i už i diapazone (10))
spausdinti (tipas (skaičiai))
spausdinti (sąrašas (skaičiai))

Skirtumas tarp generatoriaus ir įprastos funkcijos:

  1. Generatorius pateikia reikšmes naudodamas derlius raktinis žodis, kur įprasta funkcija naudoja grįžti raktinis žodis
  2. Generatorius pradeda ten, kur sustojo, kai paskambino kitą kartą. Įprasta funkcija kiekvieną kartą vykdo visus teiginius.
  3. Generatorius taupo atmintį, nes grąžina vieną vertę vienu metu. Taigi galime jį naudoti begalinėms reikšmėms generuoti.

Išvada:

Generatorius yra labai naudingas, kai tvarkome didžiulius / didelius duomenis. Tam tikru metu joje yra tik vienas, o ne visi duomenys. Generatorių koncepcija pitone laikoma išplėstine koncepcija.

Kaip atsisiųsti ir paleisti „Sid Meier Civilization VI“ sistemoje „Linux“
Įvadas į žaidimą „Civilization 6“ yra šiuolaikinė klasikinės koncepcijos, pristatytos „Age of Empires“ žaidimų serijoje, koncepcija. Idėja buvo gana p...
Kaip įdiegti ir žaisti „Doom“ sistemoje „Linux“
Įvadas į Doom „Doom“ serija atsirado 90-aisiais, išleidus originalų „Doom“. Tai buvo tiesioginis hitas, o nuo to laiko žaidimų serija gavo daugybę apd...
„Vulkan“, skirta „Linux“ vartotojams
Kiekvienos naujos kartos grafikos plokštės matome, kaip žaidimų kūrėjai peržengia grafinės ištikimybės ribas ir artėja prie fotorealizmo. Nepaisant vi...