Am Montag 22 Mai 2006 01:59 schrieb Josiah Carlson:
> > 1) It unifies the syntax for list comprehensions and for loops, which use
> > the
>
> No, it /partially unifies/ list comprehensions and for loops.  To
> actually unify them, you would need to allow for arbitrarily nested fors
> and ifs...
>
> for ... in ... [if ...] [for ... in ... [if ...]]*:
>
> If I remember correctly, this was why it wasn't accepted before; because
> actual unification is ugly.

This syntax is ugly, that's why the PEP doesn't try to make a case for this. 
But, one level equivalence to list comprehensions isn't bad, again, at least 
in my eyes.

> > 2) Just as I've replied to Terry J. Reed, if you find list comprehensions
> > easy to read, you're also bound to be able to understand what "for <expr>
> > in <expr> if <expr>:" does, at least AFAICT.
>
> Not everyone finds list comprehensions easy to read.

Why has Python added list-comprehensions, then? (or at least, why has Python 
added the 'if'-expression to list-comprehensions if they're hard to read? 
filter/itertools/any of the proposed "workarounds" in the PEP would also work 
for list-comprehensions).

> > 3) Generally, indentation, as Terry J. Reed suggested, isn't always good.
> > If the body of the loop is more than a few lines long (which happens more
> > often than not in my code), extra indentation is bound to confuse me.
> > That's why I
>
> [snip]
>
> I feel for you; I really do.  I've done the same thing myself. However,
> I don't believe that it is a good practice, in general, and I don't
> think that syntax should support this special case.

Why isn't this good practice? It's not always sensible to refactor loop code 
to call methods (to make the loop body shorter), and it's a pretty general 
case that you only want to iterate over part of a generator, not over the 
whole content. Because of this, list comprehensions grew the 'if'-clause. So: 
why doesn't the for-loop?

--- Heiko.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to