[Python-ideas] Aid reiteration with new class: gfic

Mathias Panzenböck grosser.meister.morti at gmx.net
Fri Jun 19 23:29:41 CEST 2009


Paul Moore wrote:
> 2009/6/19 John Graham <john.a.graham at gmail.com>:
>> Exactly how does itertools.tee not cover this use case?
> 
> I've been wondering the same sort of thing. But if you're going to
> sequentially run through the iterator twice
> 
>     for i in it:
>         do something
>     for i in it:
>         do something else
> 
> then itertools.tee is documented as being basically equivalent to, but
> worse than, list(): "In general, if one iterator is going to use most
> or all of the data before the other iterator, it is faster to use
> list() instead of tee()".
> 
> So the question becomes, how does list() not cover this use case.
> 
> The only answer I can see is that the proposal avoids allocating
> temporary storage for all of the values generated. Consider
> xrange(1000000) - if you can call xrange twice, rather than saving a
> million values, you've saved a lot of memory.
> 
> But this only applies when you're writing functions designed to take
> extremely general iterators. Someone writing a function which can take
> essentially arbitrary iterators, and which has to handle unboundedly
> large input gracefully, probably has worse problems than the lack of
> standard library support for something they can code themselves fairly
> easily...
> 
> Paul.

I don't know if this applies here but generators can also yield infinite lists. 
In such an case list() is not an alternative.

	-panzi



More information about the Python-ideas mailing list