Python

Python ģenerators

Python ģenerators
Šajā tēmā mēs iemācīsimies Python Generator.

Definīcija: Ģenerators ir kā parasta funkcija, kas ģenerē vērtību diapazonu, izmantojot raža atslēgvārds. Tas atgriež vienu objektu vienlaikus. Tas iekšēji izmanto iteratoru. Lai piekļūtu nākamajam elementam Nākamais() vai arī mēs varam to izmantot priekš cilpa. Ja mēs mēģinām piekļūt vērtībai ārpus diapazona, tā paaugstina a StopIteration kļūda.

Mēs redzēsim dažus piemērus, lai labāk saprastu

Piem .: ģeneratora funkcija vērtību diapazonam

def range_fun (n):
x = 0
kamēr x < n:
raža x
x + = 1
y = diapazona prieks (3)
#call using for loop
drukāt ('Ģenerēt vērtības, izmantojot metodi Next ()')
i i diapazonā_jautrināt (3):
drukāt (i)
# zvanu ģenerators, izmantojot nākamo metodi
drukāt ('Veidot vērtības, izmantojot cilpa metodi')
drukāt (nākamais (y))
drukāt (nākamais (y))
drukāt (nākamais (y))
izdrukāt (nākamais (y)) # Tiks izcelts Stop Iteration izņēmums

Piem: Ģeneratora funkcija Fibonači sērijām

def fib_fun (n):
x, y = 0, 1
kamēr x < n:
raža x
x, y = y, x + y
z = fib_fun (6) # ģeneratora objekts
drukāt ('Ģenerēt vērtības, izmantojot metodi Next ()')
drukāt (nākamais (z))
drukāt (nākamais (z))
drukāt (nākamais (z))
drukāt (nākamais (z))
drukāt (nākamais (z))
drukāt (nākamais (z))
drukāt ('Veidot vērtības, izmantojot cilpa metodi')
i i fib_fun (6):
drukāt (i)

Piem: Ģeneratora funkcija vērtību diapazona izveidošanai, ņemot vērā sākuma un beigu vērtības.

def my_range (sākums, beigas):
strāva = sākums
kamēr pašreizējais < end:
ienesīguma strāva
strāva + = 1
drukāt ('Ģenerēt vērtības, izmantojot metodi Next ()')
nums = mans diapazons (1,5)
drukāt (nākamais (skaitļi))
drukāt (nākamais (skaitļi))
drukāt (nākamais (skaitļi))
drukāt (nākamais (skaitļi))
drukāt ('Veidot vērtības, izmantojot cilpa metodi')
skaitlim manā diapazonā (1,5):
drukāt (num)

Piem: Ģenerators, lai katru skaitli (mazāku par skaitli) reizinātu ar skaitli

def gen_mulby_num (max, skaits):
n = 0
kamēr n < max:
raža n * num
n + = 1
priekš i gen_mulby_num (5,3):
drukāt (i)

Piem: Ģenerators, lai atrastu vērtību diapazona kubu

def gen_mulby_num (max, skaits):
n = 0
kamēr n < max:
raža n * num
n + = 1
priekš i gen_mulby_num (5,3):
drukāt (i)

Piem: vairāki ģeneratori: atrodiet skaitļa ģenerēto pāra skaitļu kvadrātu

1. ģenerators: no noteiktā skaitļa ģenerē pāra vērtības

2. ģenerators: ģenerē kvadrātu skaitļus no generator1 vērtībām

def gen_even (m):
n = 0
kamēr n < m:
ja n% 2 == 0:
raža n
n + = 2
def gen_square (skaitļi):
skaitlim skaitļos:
raža 2 * num
attiecībā uz n gen_square (gen_even (15)):
izdruka (n)


Piem: Vairāki ģeneratori: izveidojiet fibnači sērijas un katram skaitlim pievienojiet vērtību 10.

Generator1: ģenerē fibonacci sērijas no noteikta skaitļa

Ģenerators2: pievienojiet katru skaitli pa 10 no ģeneratora1

def gen_fib (n):
x, y = 0, 1
kamēr x < n:
raža x
x, y = y, x + y
def gen_add_10 (skaitļi):
skaitlim skaitļos:
raža 10 + num
attiecībā uz n gen_add_10 (gen_fib (5)):
izdruka (n)


Izpratne par ģeneratoru:

Ģeneratora izpratne ir līdzīga saraksta izpratnei, kur sarakstā tiek izmantotas kvadrātiekavas; šajā gadījumā tiek izmantotas parastās iekavas.

Piem:

nums = (i pret i diapazonā (10))
drukāt (tips (skaitļi))
drukāt (saraksts (summas))

Atšķirība starp ģeneratoru un normālu darbību:

  1. Ģenerators sniedz vērtības, izmantojot raža atslēgvārds, kurā parastā funkcija izmanto atgriešanās atslēgvārds
  2. Ģenerators sākas no vietas, kur apstājās, kad nākamreiz tiek izsaukts. Normālā funkcija katru reizi izpilda visus paziņojumus.
  3. Ģenerators ietaupa atmiņu, jo tā vienlaikus atdod vienu vērtību. Tāpēc mēs to varam izmantot, lai ģenerētu bezgalīgas vērtības.

Secinājums:

Ģenerators ir ļoti noderīgs, ja mēs apstrādājam milzīgus / lielus datus. Noteiktā laikā tajā ir tikai viens vienīgs, nevis veseli dati. Ģeneratoru koncepcija tiek uzskatīta par uzlabotu jēdzienu pitonā.

Kā lejupielādēt un atskaņot Sid Meier Civilization VI operētājsistēmā Linux
Ievads spēlē Civilization 6 ir mūsdienīga klasiskā koncepcija, kas ieviesta Age of Empires spēļu sērijā. Ideja bija diezgan vienkārša; jūs sāktu pašā ...
Kā instalēt un spēlēt Doom uz Linux
Ievads liktenī Doom sērija radās 90. gados pēc sākotnējā Doom izlaišanas. Tas bija tūlītējs hīts, un kopš tā laika spēļu sērija ir saņēmusi daudzas ba...
Vulkan Linux lietotājiem
Ar katru jauno grafisko karšu paaudzi mēs redzam, kā spēļu izstrādātāji pārspēj grafiskās uzticamības robežas un tuvojas fotoreālismam. Neskatoties uz...