Heim  >  Artikel  >  Backend-Entwicklung  >  Der Unterschied zwischen Python-Iteratoren und -Generatoren

Der Unterschied zwischen Python-Iteratoren und -Generatoren

(*-*)浩
(*-*)浩Original
2019-06-22 16:12:173105Durchsuche

Iterator ist ein abstrakteres Konzept. Wenn seine Klasse über eine Next-Methode und eine Iter-Methode verfügt, gibt es sich selbst zurück. Für Containerobjekte wie String, Liste, Diktat, Tupel usw. verwenden Sie For Das Durchlaufen von Schleifen ist sehr praktisch.

Der Unterschied zwischen Python-Iteratoren und -Generatoren

Die for-Anweisung im Hintergrund ruft die Funktion iter() für das Containerobjekt auf. iter() ist eine integrierte Funktion von Python. iter() gibt ein Iteratorobjekt zurück, das die next()-Methode definiert, die nacheinander auf die Elemente im Container zugreift. next() ist ebenfalls eine integrierte Funktion von Python. Wenn keine nachfolgenden Elemente vorhanden sind, löst next() eine StopIteration-Ausnahme aus. (Empfohlenes Lernen: Python-Video-Tutorial)

# 随便定义一个list
listArray=[1,2,3]
# 使用iter()函数
iterName=iter(listArray)
print(iterName)

Generator (Generator) ist ein einfaches und leistungsstarkes Tool zum Erstellen von Iteratoren. Sie werden wie reguläre Funktionen geschrieben, außer dass sie Yield-Anweisungen verwenden, wenn sie Daten zurückgeben müssen. Bei jedem Aufruf von next() gibt der Generator die Position zurück, an der er aufgehört hat (er merkt sich die Position, an der die Anweisung zuletzt ausgeführt wurde, und alle Datenwerte)

# 菲波那切数列
def Fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1
    return '亲!没有数据了...'
# 调用方法,生成出10个数来
f=Fib(10)
# 使用一个循环捕获最后return 返回的值,保存在异常StopIteration的value中
while  True:
    try:
        x=next(f)
        print("f:",x)
    except StopIteration as e:
        print("生成器最后的返回值是:",e.value)
        break

Unterschied:

Generatoren können alles, was Iteratoren können, und da die Methoden iter() und next() automatisch erstellt werden, sind Generatoren besonders prägnant und Generatoren auch effizient, da sie Generatorausdrücke anstelle von Listen verwenden. Durch das Parsen kann gleichzeitig Speicher gespart werden zur gleichen Zeit. Zusätzlich zu den automatischen Methoden zum Erstellen und Speichern des Programmstatus wird automatisch eine StopIteration-Ausnahme ausgelöst, wenn der Generator beendet wird.

Weitere technische Artikel zum Thema Python finden Sie in der Spalte Python-Tutorial, um mehr darüber zu erfahren!

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Python-Iteratoren und -Generatoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn