Ich bin wirklich fasziniert von all den interessanten Iteratoren in iwertools und eine Verwirrung, die ich hatte, ist der Unterschied zwischen diesen beiden Funktionen und warum chain.from_iterator existiert.
%Vor%Was ist der Unterschied zwischen den beiden Funktionen?
Ersteres kann nur mit entpackbaren Iterablen umgehen. Letzteres kann mit Iterablen umgehen, die nicht vollständig entpackt werden können, wie z. B. unendliche Generatoren.
Betrachten Sie
%Vor% Darüber hinaus ist nur das Auspacken eine eifrige Vorab-Kosten-Aktivität. Wenn Ihr iterables also Effekte hat, die Sie träge auswerten möchten, ist from_iterable
die beste Option.
chain(*foo(5))
entpackt den gesamten Generator, packt ihn in ein Tupel und verarbeitet ihn dann.
chain.from_iterable(foo(5))
fragt den Generator ab, der aus foo(5)
value für value erstellt wurde.
Probieren Sie foo(1000000)
aus und beobachten Sie, wie die Speicherbelegung steigt und sinkt.
Tags und Links python