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.
artikelneu = (
[r[i] for i in [0, 1, 4, 5, 25]]
for r in my_reader(infile)
if tuple(r[:2]) not in artikelvergleich
)
Zum Verständnis!
Ist meine Annahme richtig, daß die Spaltendefinition von '[r for i in [0, 1, 4, 5, 25]]' in 'my_reader(infile)' übernommen wird?
Also der Ablauf ist: `for`-Schleife über das Ergebnis von `my_reader(infile)`, wobei pro Iteration `r` neu gebunden wird. Danach wird die Bedingung aus der letzten Zeile für das jeweilige `r` überprüft und abhängig davon schließlich das `r` innerhalb der oberen Zeile benutzt, wo der Zugriff über den Index gemacht wird. Trifft die Bedingung für ein `r` in der letzten Zeile nicht zu, dann wird die LC in der ersten Zeile garnicht erst betreten.
ohne alles genau gelesen zu haben eine spontane Idee. Wenn die Daten sehr, sehr groß sind, könnte man es doch womöglich beschleunigen, wenn man die zu bearbeitenden Listen aufteilt und mit Rekursion untersucht. :K
@snafu: Naja, `itemgetter()` erstellt dabei jedesmal ein neues Funktionsobjekt das nach einmal benutzen wieder verworfen wird. Aber alle diese Objekte machen das gleiche.
@BlackJack: Ja, ist aber Geschmackssache, ob man das jetzt wirklich so schrecklich findet. Performancemäßig dürfte der Unterschied nicht auffallen. Wenn man wollte, könnte man bei deiner Lösung ja auch die Zahlenfolge cachen, damit nicht jedes Mal eine neue Liste angelegt wird.
AlphaX2 hat geschrieben:ohne alles genau gelesen zu haben eine spontane Idee. Wenn die Daten sehr, sehr groß sind, könnte man es doch womöglich beschleunigen, wenn man die zu bearbeitenden Listen aufteilt und mit Rekursion untersucht. :K
Wieso sollte das schneller sein? Wenn die Daten sehr groß sind, wird dein Stack sehr groß und irgendwann fliegst du in Python gegen das Rekursionslimit, also gerade für große Datenmengen ist Rekusion (in Python natürlich) nicht das Mittel der Wahl.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice