Python: Generator-Ausdruck gegen Ausbeute

In Python, gibt es einen Unterschied zwischen der Erstellung eines generator-Objekt durch eine generator-Ausdruck Vergleich mit der Ertrag Aussage?

Mit Ertrag:

def Generator(x, y):
    for i in xrange(x):
        for j in xrange(y):
            yield(i, j)

Mit generator-Ausdruck:

def Generator(x, y):
    return ((i, j) for i in xrange(x) for j in xrange(y))

Beide Funktionen geben die generator-Objekte, die Tupel, z.B. (0,0), (0,1) etc.

Irgendwelche Vorteile der einen oder der anderen? Gedanken?


Danke an alle! Es gibt eine Menge toller Informationen und weitere Referenzen in diesen Antworten!

InformationsquelleAutor der Frage cschol | 2010-01-03

Schreibe einen Kommentar