Convenient filtering in for cycles

Ian Kelly ian.g.kelly at gmail.com
Wed Oct 5 13:24:51 EDT 2011


On Wed, Oct 5, 2011 at 10:55 AM, Stefano Maggiolo <s.maggiolo at 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


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /