2016-11-04 3 views
3

Ich habe eine faule Iterator/Generator a, die einige Nebenwirkungen bei jeder Iteration macht und ich bin nicht auf die Werte, die es produziert. Was ist der idiomatische Weg, um die Nebenwirkungen zu bewerten? Natürlich kann ich das einfach machen:Bewerten Iterator in Python

for _ in a: pass 

Aber es scheint eher hässlich.

+1

Das ist wahrscheinlich die am wenigsten schlechte Strategie, da Generatoren mit Nebenwirkungen sind nicht sehr idiomatische Python in erster Linie. – TigerhawkT3

+4

Bessere Lösung ist, schreiben Sie nicht einen faulen Iterator mit Nebenwirkungen – khelwood

+0

True, aber in meinem Fall kommt der Iterator leider aus einer Bibliothek. – user1747134

Antwort

2

Ich fand das Rezept für die Funktion consume in iwertools Rezepte Abschnitt. Im Wesentlichen empfiehlt es zu tun:

collections.deque(iterator, maxlen=0)