<font color='black' size='2' face='arial'>Yeah, that's basically it.  Except it's clear the other members of this list understand subtle python grammar MUCH better than I do.
<div><br>
</div>

<div>Main issue seems to be that programmers "shouldn't" shy away from 'break' (I can kind of see the argument both ways) but they do.  So a lot of people are making their code more confusing...</div>

<div><br>
</div>

<div>I think for deserves a 'while' because it is really sparing in its implementation (no index, no explicit bounds check) and so deserves a clean way to prematurely terminate the loop if needed.  Break is a little harsh (for forbidden by many), itertools.takewhile is too wordy, and anything else is worse....</div>

<div><br>
</div>

<div>I think prematurely terminating a for loop is a very common activity as well.</div>

<div><br>
</div>

<div>-Jim <br>
<br>
<br>

<div style="font-family:arial,helvetica;font-size:10pt;color:black">-----Original Message-----<br>
From: David Mertz <mertz@gnosis.cx><br>
To: python-ideas <python-ideas@python.org><br>
Sent: Tue, Jun 25, 2013 12:55 pm<br>
Subject: Re: [Python-ideas] Is this PEP-able? for X in ListY while conditionZ:<br>
<br>




<div id="AOLMsgPart_2_ec841f93-528a-49fc-afe7-eca877fcc691">

<div dir="ltr">
<div>
<div>I'm not quite certain if this is what the OP is proposing, but I think that extending comprehensions to allow a 'while' clause would be intuitive and somewhat useful.  It's true that itertools.takewhile() basically gets us the same thing, but actual syntax would be nice, and also more straightforward for comprehensions other than generator comprehensions.  E.g. <br>

<br>
</div>
  attendees = {guest:guest.plus_N for guest in waiting_list while not room_full()}<br>
<br>
</div>
This would actually produce the same result as:<br>

<div>
<div><br>
  attendees = {guest:guest.plus_N for guest in waiting_list if not room_full()}<br>

<br>

<div>
<div class="gmail_extra">But it would save the extra looping over a bunch of final False values of 'room_full()'.<br>
</div>

<div class="gmail_extra"><br>

<div class="gmail_quote">On Tue, Jun 25, 2013 at 6:35 AM,  <span dir="ltr"><<a removedlink__988567822__href="mailto:jimjhb@aol.com">jimjhb@aol.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><font color="black" face="arial"><span style="font-family:Helvetica,Arial,sans-serif;font-size:small">Syntax:</span><br>




<div style="font-size:10pt;font-family:arial,helvetica">

<div><font color="black" face="arial">

<div style="font-size:10pt;font-family:arial,helvetica">

<div><font color="black" face="arial">





<div style="font-family:arial"><br>



</div>







<div style="font-family:arial">for X in ListY while conditionZ:</div>







<div style="font-family:arial"><br>



</div>





<div style="font-family:arial">The 'for' loop would proceed as long as conditionZ remains true.</div>







<div style="font-family:arial"><br>


</div>



<font face="arial">The motivation is to be able to make use of all the great aspects of the python 'for' (no indexing or explicit</font>



<div style="font-family:arial">end condition check, etc.) and at the same time avoiding a 'break' from the 'for'.  </div>







<div style="font-family:arial"><span style="font-family:Helvetica,Arial,sans-serif;font-size:10pt"><br>



</span></div>







<div><span style="font-size:10pt"><font face="arial">(NOTE:  Many people are being taught to avoid 'break' and 'continue' at all costs, so they instead convert</font></span></div>







<div><span style="font-family:Helvetica,Arial,sans-serif;font-size:10pt">the clean 'for' into a less-clean 'while'.  Or they just let the 'for' run out.  You can argue against this teaching</span></div>








<div><span style="font-family:Helvetica,Arial,sans-serif;font-size:10pt">practice (at least for Python) but that doesn't mean it's not prevalent and prevailing.)</span></div>







<div><span style="font-family:Helvetica,Arial,sans-serif;font-size:10pt"><br>



</span></div>







<div><span style="font-family:Helvetica,Arial,sans-serif;font-size:10pt">[People who avoid the 'break' by functionalizing an inner portion of the loop are just kidding themselves and making </span><span style="font-family:Helvetica,Arial,sans-serif;font-size:10pt">their own code worse, IMO. Takewhile from itertools also works, but that's clumsy and wordy as well.]</span></div>








<div><span style="font-family:Helvetica,Arial,sans-serif;font-size:10pt"><br>



</span></div>







<div><span style="font-family:Helvetica,Arial,sans-serif;font-size:10pt">I'm not super familiar with CPython, but I'm pretty sure I could get this up and working without too much effort.</span></div>







<div><br>


</div>





<div>Please note that I don't feel the answer to this is 'just use break'.  Programmers are now being taught to avoid 'break' and 'continue' as if they were 'goto's.  The result (now) is that people are avoiding the 'for' (with its GREAT properties) because they can't break out of it.</div>






<div><br>


</div>







<div><span style="font-family:Helvetica,Arial,sans-serif;font-size:10pt">Comments and Questions welcome.</span></div>







<div><span style="font-family:Helvetica,Arial,sans-serif;font-size:10pt"><br>



</span></div>







<div><span style="font-family:Helvetica,Arial,sans-serif;font-size:10pt">Thanks.  </span></div>



</font>
</div>






</div>


</font>
</div>





</div>

</font><br>
_______________________________________________<br>

Python-ideas mailing list<br>

<a removedlink__988567822__href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>

<a target="_blank" removedlink__988567822__href="http://mail.python.org/mailman/listinfo/python-ideas">http://mail.python.org/mailman/listinfo/python-ideas</a><br>

<br>
</blockquote></div>
<br>
<br clear="all"><br>
-- <br>
Keeping medicines from the bloodstreams of the sick; food <br>
from the bellies of the hungry; books from the hands of the <br>
uneducated; technology from the underdeveloped; and putting <br>

advocates of freedom in prisons.  Intellectual property is<br>
to the 21st century what the slave trade was to the 16th.<br>

</div>
</div>
</div>
</div>
</div>


</div>



<div id="AOLMsgPart_3_ec841f93-528a-49fc-afe7-eca877fcc691" style="margin: 0px;font-family: Tahoma, Verdana, Arial, Sans-Serif;font-size: 12px;color: #000;background-color: #fff;">

<pre style="font-size: 9pt;"><tt>_______________________________________________
Python-ideas mailing list
<a removedlink__988567822__href="mailto:Python-ideas@python.org">Python-ideas@python.org</a>
<a removedlink__988567822__href="http://mail.python.org/mailman/listinfo/python-ideas" target="_blank">http://mail.python.org/mailman/listinfo/python-ideas</a>
</tt></pre>
</div>
 <!-- end of AOLMsgPart_3_ec841f93-528a-49fc-afe7-eca877fcc691 -->



</div>
</div>
</font>