On Wed, Oct 5, 2011 at 10:55 AM, Stefano Maggiolo <s.maggi...@gmail.com> wrote:
> Dear all,
>
> I would like to know if there is a (more) convenient way of doing this
> structure:
>
> ===(1)===
> for x in l:
>    if P(x):
>        do_stuff(x)
> ======
>
> Let's say that my dream syntax would be
>
> ===(2)===
> for x in l if P(x):
>    do_stuff(x)
> ======

for x in filter(P, l):
    do_stuff(x)

This works nicely if P is a function but can be a bit unwieldy if you
want to use an arbitrary expression, since you would need to put it in
a lambda.

> Is there some better and valid construction I missed? If not, is there
> a reason why (2) is not in the language?

I guess because, as you helpfully enumerated, there are already plenty
of options for iterating with a condition.  Syntax isn't added without
a strong reason, and avoiding an extra line or an extra indentation
level isn't enough.

Cheers,
Ian
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to