Is this PEP-able? fwhile

Chris Angelico rosuav at gmail.com
Mon Jun 24 18:50:42 EDT 2013


On Tue, Jun 25, 2013 at 8:43 AM, Ian Kelly <ian.g.kelly at gmail.com> wrote:
> On Mon, Jun 24, 2013 at 4:41 PM, Fábio Santos <fabiosantosart at gmail.com> wrote:
>>
>> On 24 Jun 2013 22:29, "Ian Kelly" <ian.g.kelly at gmail.com> wrote:
>>>
>>> On Mon, Jun 24, 2013 at 2:34 PM, Fábio Santos <fabiosantosart at gmail.com>
>>> wrote:
>>> > This can probably be best achieved by adding to the existing for loop,
>>> > so maybe taking advantage of the existing for...if syntax and adding
>>> > for...while would be a better idea?
>>>
>>> The for...if syntax only exists for comprehensions and generators.  If
>>> we're going to add for...while for loops, then we might as well go
>>> ahead and add for...if loops there as well.
>>>
>>> That said, I do like this syntax better than "fwhile".
>>
>> Good point. Still, I don't see why for..if doesn't exist in for loops
>> anyway. It may be lack of foresight, but I don't understand why at all.
>
> Because it adds more syntax to learn when learning the language, it
> introduces more maintenance overhead, and it offers no clear benefit
> over simply nesting an if inside a for.

In more free-form languages, I implement this by simply omitting a line-break:

for (int i=0;i<num_whatevers;++i) if (whatever[i].flag)
{
    do_stuff;
}

Python could afford to lose a little rigidity here rather than gain
actual new syntax:

for i in range(10): if i%3:
    print(i)

And there you are, the for-if "filtered iteration" model, just by
relaxing one rule.

ChrisA



More information about the Python-list mailing list