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.
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

generatorobjekte umkehren?

Beitragvon EnTeQuAk » Samstag 9. Juni 2007, 12:08

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

Beitragvon BlackJack » Samstag 9. Juni 2007, 12:23

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:

Beitragvon EnTeQuAk » Samstag 9. Juni 2007, 12:41

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

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], kbr