generatorobjekte umkehren?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Bei Listen kann man ja ganz einfach den Inhalt umkehren:

Code: Alles auswählen

liste = [1, 2, 3, 4]
rev_liste = liste[::-1]
Beziehungsweise mit `reversed` bei iterationen arbeiten.

Doch wie verhält es sich da bei Generatorobjekten?

`reversed` geht da gar nicht, da es eine Sequenz benötigt.
Gut. Aber gibt es noch eine andere Variante als

Code: Alles auswählen

rev_genobj = (x for x in list(genobj)[::-1])
beziehungsweise

Code: Alles auswählen

rev_genobj = (x for x in reversed(list(g())))
Das würde mich mal interessieren.

MfG EnTeQuAk
BlackJack

Generatorobjekte kann man nicht "umkehren". Wie sollte das auch bei "unendlichen" Generatoren funktionieren. Oder bei solchen, deren Elemente von vorherigen abhängig sind.

Bei Deinen Beispielen machst Du übrigens zuviel. `reversed()` liefert schon einen Iterator und eine Liste ist "iterable". Es macht keinen grossen Sinn die nochmal in einen Generatorausdruck zu stecken der nichts mit den Elementen tut, ausser sie weiter zu reichen.
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Generatorobjekte kann man nicht "umkehren". Wie sollte das auch bei "unendlichen" Generatoren funktionieren. Oder bei solchen, deren Elemente von vorherigen abhängig sind.
Gut, da hast du natürlich recht. An solche Anwendungsfälle hab ich nicht ganz gedacht ;)


MfG EnTeQuAk
Antworten