Python -Generator

Python -Generator
In diesem Thema lernen wir den Python -Generator.

Definition: Ein Generator ist wie eine normal Ertrag Stichwort. Es gibt jeweils ein Objekt zurück. Es verwendet intern einen Iterator. Zu dem nächsten Element zugreifen nächste() Funktion wird verwendet oder wir können sie verwenden für eine Schleife. Wenn wir versuchen, auf den Wert außerhalb des Bereichs zuzugreifen, erhöht es a Stopperation Fehler.

Wir werden ein Beispiel sehen, um besser zu verstehen

Ex: Generatorfunktion für den Wertebereich

Def range_fun (n):
x = 0
während x < n:
Ausbeute x
x += 1
y = range_fun (3)
#Call verwenden für die Schleife
print ('Werte generieren mit Next () -Methode'))
für i in Range_fun (3):
drucken (i)
#Call -Generator mit der nächsten Methode
print ('Werte generieren mit für die Schleifenmethode'))
Druck (nächstes (y))
Druck (nächstes (y))
Druck (nächstes (y))
Print (Next (y))#Ausnahme von Stop -Iteration wird erhöht

Ex: Generatorfunktion für die Fibonacci -Serie

Def fib_fun (n):
x, y = 0, 1
während x < n:
Ausbeute x
x, y = y, x + y
z = fib_fun (6) #Generator -Objekt
print ('Werte generieren mit Next () -Methode'))
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 generieren mit für die Schleifenmethode'))
für i in fib_fun (6):
drucken (i)

Ex: Generatorfunktion zum Erstellen von Wertebereichern, die Start- und Endwerte angegeben haben.

Def My_Range (Start, Ende):
Strom = Start
während aktuell < end:
Renditenstrom
Strom += 1
print ('Werte generieren mit Next () -Methode'))
nums = my_range (1,5)
Druck (nächste (NUMS))
Druck (nächste (NUMS))
Druck (nächste (NUMS))
Druck (nächste (NUMS))
print ('Werte generieren mit für die Schleifenmethode'))
für num in my_range (1,5):
drucken (num)

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

Def Gen_mulby_num (max, num):
n = 0
während n < max:
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 n < max:
Num
n += 1
für i in Gen_mulby_num (5,3):
drucken (i)

Ex: Mehrere Generatoren: Finden Sie das Quadrat der aus einer Zahl generierten Zahlen

Generator 1: Generieren Sie ausgegebene Werte aus einer bestimmten Zahl

Generator 2: Generieren Sie Quadratnummern aus Generator1 -Werten

Def Gen_even (m):
n = 0
während n < m:
Wenn n % 2 == 0:
Ausbeute n
n += 2
Def Gen_Square (NUMS):
für num in nums:
Ausbeute 2 * num
für n in Gen_Square (Gen_even (15)):
Druck (n)


Ex: Mehrere Generatoren: Erstellen Sie die Fibnacci -Serie und geben Sie den Wert 10 pro Zahl hin.

Generator1: Erzeugt Fibonacci -Serien aus einer bestimmten Nummer

Generator2: Fügen Sie jede Zahl um 10 vom Generator1 hinzu1

Def Gen_fib (n):
x, y = 0, 1
während x < n:
Ausbeute x
x, y = y, x + y
Def Gen_add_10 (NUMS):
für num in nums:
Ergeben Sie 10 + Num
für n in Gen_add_10 (Gen_fib (5)):
Druck (n)


Generatorverständnisse:

Generatorverständnisse ähneln den Listenverständnissen, bei denen die Liste quadratische Klammern verwendet. Dies verwendet normale Klammern.

Ex:

nums = (i für i im Bereich (10))
Print (Typ (nums))
Print (Liste (NUMS))

Unterschied zwischen Generator und normaler Funktion:

  1. Ein Generator liefert Werte mit Verwendung Ertrag Schlüsselwort, bei dem die normale Funktion die verwendet zurückkehren Stichwort
  2. Generator beginnt von der Stelle, an der es angehalten wurde, wenn er das nächste Mal angerufen hat. Die normale Funktion führt jedes Mal alle Aussagen aus.
  3. Generator speichert den Speicher, da er jeweils einen Wert zurückgibt. Wir können es damit verwenden, um unendliche Werte zu erzeugen.

Abschluss:

Generator ist sehr hilfreich, wenn wir riesige/große Daten behandeln. Zu einem bestimmten Zeitpunkt enthält es nur ein einzelnes Datenstück und nicht nur ganze Daten. Generatorenkonzept wird als fortgeschrittenes Konzept in Python angesehen.