Cameron Laird <[EMAIL PROTECTED]> wrote:

> In article <[EMAIL PROTECTED]>,
> Alex Martelli <[EMAIL PROTECTED]> wrote:
>                       .
>                       .
>                       .
> >My preference would be (with the original definition for
> >words_of_the_file) to code
> >
> >   numwords = sum(1 for w in words_of_the_file(thefilepath))
>                       .
>                       .
>                       .
> There are times when 
> 
>     numwords = len(list(words_of_the_file(thefilepath))
> 
> will be advantageous.

Can you please give some examples?  None comes readily to mind...


> For that matter, would it be an advantage for len() to operate
> on iterables?  It could be faster and thriftier on memory than
> either of the above, and my first impression is that it's 
> sufficiently natural not to offend those of suspicious of
> language bloat.

I'd be a bit worried about having len(x) change x's state into an
unusable one. Yes, it happens in other cases (if y in x:), but adding
more such problematic cases doesn't seem advisable to me anyway -- I'd
evaluate this proposal as a -0, even taking into account the potential
optimizations to be garnered by having some iterables expose __len__
(e.g., a genexp such as (f(x) fox x in foo), without an if-clause, might
be optimized to delegate __len__ to foo -- again, there may be semantic
alterations lurking that make this optimization a bit iffy).


Alex
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to