Zuerst importieren wir aus einem kleinen Programm, definieren jeweils eine Liste und finden die Primzahlen darin. Wir werden so schreiben
import math def is_Prims(number): if number == 2: return True //除2以外的所有偶数都不是素数 elif number % 2 == 0: return False //如果一个数能被除1和本身之外的数整除,则为合数。其实我们的判定范围到根号n就可以 for cur in range(2,int(math.sqrt(number))+1,2): if number % cur == 0: return False else: return True def get_Prims(input_list): result_list = list() for element in input_list: if is_Prims(element): result_list.append(element) return result_list aa = get_Prims([1,2,3,4,5,6,7,8,9]) print (aa)
Aber wenn wir geben wollen eine Zahl, dann alle Primzahlen auflisten, die größer als diese Zahl sind? Wir könnten so schreiben:
def get_Prims(number): if is_Prims(number): return number
Aber sobald die Return-Funktion vollständig endet, nachdem die Kontrolle an den Aufrufer übergeben wurde, werden alle lokalen Variablen und die Funktionsarbeit verworfen. Der nächste Anruf beginnt von vorne. Daher können wir die folgende Schreibmethode verwenden:
def get_Prims(number): while(True): if is_Prims(number): yield number number += 1 def get_numbers(): total = list() for next_prim in get_Prims(2): if next_prim < 100: total.append(next_prim) else: print(total) return get_numbers()
Erklären wir die Generatorfunktion. Der Def-Code einer Funktion enthält yield und die Funktion wird automatisch zu einer Generatorfunktion (auch wenn sie noch return enthält). , Generator Die Funktion erstellt einen Generator (eine spezielle Form des Iterators, dieser Iterator verfügt über eine integrierte next()-Methode. Wenn ein Wert benötigt wird, wird er im Gegensatz zu gewöhnlichen Funktionen durch „Yield“ generiert). Kontrolle Die Rechte wurden nicht übergeben.
for-Schleife ruft implizit die Funktion next() auf. Zu diesem Zeitpunkt ist der Generator für den Aufruf verantwortlich Wenn Sie bei jedem Aufruf der Methode next( ) einen Wert zurückgeben, übertragen Sie diesen Wert mit yield zurück, was der return-Anweisung entspricht.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Beispielcodes für Ertrag und Generator in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!