[Python-ideas] iterator length

MRAB python at mrabarnett.plus.com
Mon Aug 9 22:22:51 CEST 2010

Paul Moore wrote:
> On 9 August 2010 18:16, Alexandru Moșoi <brtzsnr at gmail.com> wrote:
>> 1) sum(1 for e in iterator)
>> 2) len(list(iterator))
>> First solution is slow, the second solution uses O(N) extra memory.
>> I propose the addition of a new function ilen() which is functionally
>> equivalent to:
>> def ilen(iterator):
>>  return sum(1 for e in iterator)
> You say that this solution "is slow" and then you propose it? I'm confused.
That's just to describe its behaviour. An actual implementation wouldn't
necessarily do it that way.

> Besides which, as you define it, it exhausts the iterator, which makes
> it useless. It may be useful for an *iterable*, but most of them
> support len in any case.
>> This function should be different from len() because it's time
>> complexity is O(N) (most people assume that len() takes O(1)) and it
>> consumes the iterator.
> Precisely. So how is it useful?
> If you could show some real code that uses your ilen function, that
> would help clarify. But it still won't explain why the function should
> be built in rather than just defined by your code where it's needed -
> you'll have to have some very common and compelling use cases to argue
> that.
I agree.

More information about the Python-ideas mailing list