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:
- Ein Generator liefert Werte mit Verwendung Ertrag Schlüsselwort, bei dem die normale Funktion die verwendet zurückkehren Stichwort
- 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.
- 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.