Python

Python-Generator

Python-Generator
In diesem Thema lernen wir Python Generator.

Definition: Ein Generator ist wie eine normale Funktion, die einen Wertebereich mit Hilfe der Ausbeute Stichwort. Es gibt jeweils ein Objekt zurück. Es verwendet intern einen Iterator. Um auf das nächste Element zuzugreifen Nächster() Funktion verwendet wird, oder wir können sie verwenden zum eine Schleife. Wenn wir versuchen, auf den Wert außerhalb des Bereichs zuzugreifen, wird a StopIteration Error.

Wir werden ein Beispiel sehen, um es besser zu verstehen

Ex: Generatorfunktion für Wertebereich

def range_fun(n):
x = 0
während x < n:
Ertrag x
x += 1
y = range_fun (3)
#Aufruf mit for-Schleife
print('Werte mit der Methode next() generieren')
für i in range_fun(3):
drucken(i)
#Aufrufgenerator mit nächster Methode
print('Werte mit der for-Schleifenmethode generieren')
drucken (nächstes (y))
drucken (nächstes (y))
drucken (nächstes (y))
print(next(y))#Stop Iteration-Ausnahme wird ausgelöst

Ex: Generatorfunktion für Fibonacci-Reihen

def fib_fun(n):
x, y = 0, 1
während x < n:
Ertrag x
x, y = y, x + y
z = fib_fun(6) #generatorobjekt
print('Werte mit der Methode next() generieren')
drucken (nächstes (z))
drucken (nächstes (z))
drucken (nächstes (z))
drucken (nächstes (z))
drucken (nächstes (z))
drucken (nächstes (z))
print('Werte mit der for-Schleifenmethode generieren')
für i in fib_fun(6):
drucken(i)

Ex: Generatorfunktion zum Erzeugen von Wertebereichen bei gegebenen Start- und Endwerten.

def my_range(start, end):
Strom = Start
während aktuell < end:
Ertragsstrom
Strom +=1
print('Werte mit der Methode next() generieren')
nums = my_range(1,5)
print(nächste(Zahlen))
print(nächste(Zahlen))
print(nächste(Zahlen))
print(nächste(Zahlen))
print('Werte mit der for-Schleifenmethode generieren')
für num in my_range(1,5):
Drucken (Anzahl)

Ex: Generator, um jede Zahl (weniger als eine Zahl) mit einer Zahl zu multiplizieren

def gen_mulby_num(max,num):
n = 0
während nein < max:
Ertrag n * num
n += 1
für i in gen_mulby_num(5,3):
drucken(i)

Ex: Generator, um Würfel für Wertebereich zu finden

def gen_mulby_num(max,num):
n = 0
während nein < max:
Ertrag n * num
n += 1
für i in gen_mulby_num(5,3):
drucken(i)

Ex: mehrere Generatoren: Finde das Quadrat der geraden Zahlen, die aus einer Zahl erzeugt werden

Generator 1: Generiere gerade Werte aus einer gegebenen Zahl

Generator 2: Generiere Quadratzahlen aus den Werten von Generator1

def gen_even(m):
n = 0
während nein < m:
wenn n % 2 == 0:
Ertrag n
n += 2
def gen_square (Zahlen):
für num in num:
Ertrag 2 * num
für n in gen_square(gen_even(15)):
drucken(n)


Ex: Mehrere Generatoren: Erstellen Sie eine Fibnacci-Reihe und fügen Sie jeder Zahl einen Wert von 10 hinzu.

Generator1: erzeugt Fibonacci-Reihen aus einer gegebenen Zahl

Generator2: Addiere jede Zahl um 10 von Generator1

def gen_fib(n):
x, y = 0, 1
während x < n:
Ertrag x
x, y = y, x + y
def gen_add_10(Zahlen):
für num in num:
Ertrag 10 + num
für n in gen_add_10(gen_fib(5)):
drucken(n)


Generatorverständnis:

Generatorverständnisse ähneln Listenverständnissen, bei denen die Liste eckige Klammern verwendet; dies verwendet normale Klammern.

Ex:

nums = (i für i im Bereich (10))
print(Typ(Zahlen))
print(Liste(Zahlen))

Unterschied zwischen Generator und normaler Funktion:

  1. Ein Generator liefert Werte mit Ausbeute Schlüsselwort, bei dem die normale Funktion den . verwendet Rückkehr Stichwort
  2. Generator startet dort, wo er beim nächsten Aufruf aufgehört hat. Die normale Funktion führt jedes Mal alle Anweisungen aus.
  3. Generator spart Speicher, da er jeweils einen Wert zurückgibt. Damit können wir unendliche Werte generieren generate.

Fazit:

Generator ist sehr hilfreich, wenn wir mit riesigen/großen Daten umgehen. Zu einem bestimmten Zeitpunkt enthält es nur ein einzelnes Datenelement und nicht ganze Daten. Das Generatorkonzept wird in Python als fortschrittliches Konzept angesehen.

Top 5 Karten zur Spielaufnahme
Wir alle haben Streaming-Gameplays auf YouTube gesehen und geliebt. PewDiePie, Jakesepticye und Markiplier sind nur einige der Top-Gamer, die Millione...
So entwickeln Sie ein Spiel unter Linux
Vor einem Jahrzehnt hätten nicht viele Linux-Benutzer vorhergesagt, dass ihr Lieblingsbetriebssystem eines Tages eine beliebte Spieleplattform für kom...
Open-Source-Ports kommerzieller Spiele-Engines
Kostenlose, quelloffene und plattformübergreifende Spiel-Engine-Nachbildungen können verwendet werden, um sowohl alte als auch einige der relativ neue...