Python

Python-generator

Python-generator
In dit onderwerp zullen we Python Generator leren.

Definitie: Een generator is als een normale functie die een reeks waarden genereert met behulp van de opbrengst trefwoord. Het retourneert één object tegelijk. Het gebruikt intern een iterator. Om toegang te krijgen tot het volgende element De volgende() functie wordt gebruikt, of we kunnen het gebruiken voor een lus. Als we proberen toegang te krijgen tot de waarde buiten het bereik, verhoogt het a StopIteratie fout.

We zullen een voorbeeld zien om het beter te begrijpen

Ex: generatorfunctie voor waardenbereik

def range_fun(n):
x = 0
terwijl x < n:
opbrengst x
x += 1
y = bereik_plezier (3)
#call met for-lus
print('Genereer waarden met de next() methode')
voor i in range_fun (3):
afdrukken (ik)
#oproepgenerator met de volgende methode
print('Genereer waarden met de for loop-methode')
print(volgende(y))
print(volgende(y))
print(volgende(y))
print(next(y))#Stop Iteratie-uitzondering wordt verhoogd

Ex: Generatorfunctie voor Fibonacci-serie

def fib_fun(n):
x, y = 0, 1
terwijl x < n:
opbrengst x
x, y = y, x + y
z = fib_fun(6) #generator object
print('Genereer waarden met de next() methode')
print(volgende(z))
print(volgende(z))
print(volgende(z))
print(volgende(z))
print(volgende(z))
print(volgende(z))
print('Genereer waarden met de for loop-methode')
voor ik in fib_fun (6):
afdrukken (ik)

Ex: Generatorfunctie voor het creëren van een reeks waarden gegeven begin- en eindwaarden.

def my_range(begin, einde):
huidige = start
terwijl huidige < end:
opbrengst stroom
stroom +=1
print('Genereer waarden met de next() methode')
nums = mijn_bereik(1,5)
print(volgende(nums))
print(volgende(nums))
print(volgende(nums))
print(volgende(nums))
print('Genereer waarden met de for loop-methode')
voor num in my_range(1,5):
print(aantal)

Ex: Generator om elk getal (minder dan een getal) met een getal te vermenigvuldigen

def gen_mulby_num(max,num):
n = 0
terwijl n < max:
opbrengst n * aantal
n += 1
voor i in gen_mulby_num(5,3):
afdrukken (ik)

Ex: Generator om kubus te vinden voor waardenbereik

def gen_mulby_num(max,num):
n = 0
terwijl n < max:
opbrengst n * aantal
n += 1
voor i in gen_mulby_num(5,3):
afdrukken (ik)

Ex: meerdere generatoren: vind het kwadraat van even getallen gegenereerd op basis van een getal

Generator 1: genereer even waarden van een bepaald getal

Generator 2: genereer vierkante getallen uit generator1-waarden

def gen_even(m):
n = 0
terwijl n < m:
als n % 2 == 0:
opbrengst n
n += 2
def gen_square(nums):
voor aantal in aantallen:
opbrengst 2 * aantal
voor n in gen_square(gen_even (15)):
print(n)


Ex: Meerdere generatoren: maak fibnacci-reeksen en voeg waarde 10 toe aan elk nummer.

Generator1: genereert fibonacci-reeksen van een bepaald getal

Generator2: voeg elk nummer toe met 10 van generator1

def gen_fib(n):
x, y = 0, 1
terwijl x < n:
opbrengst x
x, y = y, x + y
def gen_add_10(nums):
voor aantal in aantallen:
opbrengst 10 + aantal
voor n in gen_add_10(gen_fib(5)):
print(n)


Generatorbegrippen:

Generatorbegrippen zijn vergelijkbaar met lijstbegrippen waarbij de lijst vierkante haken gebruikt; dit gebruikt normale haakjes.

Ex:

nums = (i voor i in bereik (10))
print(type(nummers))
print(lijst(getallen))

Verschil tussen generator en normale functie:

  1. Een generator levert waarden met behulp van opbrengst trefwoord waarbij de normale functie de . gebruikt terugkeren trefwoord
  2. Generator start waar hij stopte wanneer hij de volgende keer werd gebeld. De normale functie voert elke keer alle instructies uit.
  3. Generator bespaart geheugen omdat het één waarde per keer retourneert. Dus we kunnen het gebruiken om oneindige waarden te genereren.

Conclusie:

Generator is erg handig wanneer we enorme/grote gegevens verwerken. Op een bepaald moment bevat het slechts één enkel stuk gegevens in plaats van hele gegevens. Generators-concept wordt beschouwd als een geavanceerd concept in python.

Top 5 Game Capture-kaarten
We hebben allemaal gezien en genoten van streaming gameplays op YouTube. PewDiePie, Jakesepticye en Markiplier zijn slechts enkele van de beste gamers...
Hoe een spel op Linux te ontwikkelen
Tien jaar geleden zouden niet veel Linux-gebruikers voorspellen dat hun favoriete besturingssysteem ooit een populair spelplatform voor commerciële vi...
Open source-poorten van commerciële game-engines
Gratis, open source en platformonafhankelijke game-engine-recreaties kunnen worden gebruikt om zowel oude als enkele van de vrij recente gametitels te...