Was ist der Pythonic-Weg, um einen Generator zu erzeugen, der auch aggregierte Ergebnisse liefert? In Meta-Code, so etwas wie diese (aber nicht für real, wie meine Python-Version nicht unterstützt Ausbeute Mischen und zurück):Python-Funktion, die sowohl Generator- als auch Aggregat-Ergebnisse liefert
def produce():
total = 0
for item in find_all():
total += 1
yield item
return total
Wie ich es sehe, könnte ich:
- nicht machen
produce()
ein Generator, aber übergeben Sie ihm eine Rückruffunktion, um alleitem
anzurufen. - Mit jedem
yield
, auchyield
die aggregierten Ergebnisse bis jetzt. Ich würde lieber nicht die Zwischenergebnisse mit jeder Ausbeute berechnen, nur wenn Sie fertig sind. - Senden Sie eine
dict
als Argument anproduce()
, die mit den aggregierten Ergebnissen ausgefüllt wird. - Verwenden Sie eine globale, um aggregierte Ergebnisse zu speichern.
Alle von ihnen scheinen nicht sehr attraktiv ...
NB. total
ist ein einfaches Beispiel, mein tatsächlicher Code erfordert komplexe Aggregationen. Und ich brauche Zwischenergebnisse bevor produce()
fertig ist, also ein Generator.
also insgesamt nur das Äquivalent der Länge des iterable zurückgegeben von 'find_all'? Dafür können Sie einfach 'enumerate' verwenden. –