[Python-Dev] PEP 3142: Add a "while" clause to generator expressions

Tino Wildenhain tino at wildenhain.de
Thu Jan 22 11:48:08 CET 2009


Hi,

Gerald Britton wrote:
> The sieve is just one example.  The basic idea is that for some
> infinite generator (even a very simple one) you want to cut it off
> after some point.  As for the number of characters, I spelled lambda
> incorrectly (left out a b) and there should be a space after the colon
> to conform to design guides.  So, actually the takewhile version is
> two characters longer, not counting "import itertools" of course!

the only usefull approach I could see is to enable slice syntax
on generators which would make it possible to describe the exact
or maximum lenght of results you want out of it.

something like:

 >> g=(i for i in xrange(1000))[2:5]
 >> g.next() # wrapper would now step 2 times w/o yield and 1 with yield
2
 >> g.next()
3
 >> g.next()
4
 >> g.next()
Traceback (most recent call last):
   File "<interactive input>", line 1, in <module>
StopIteration

as expected - this could be included into itertools for now.

Regards
Tino



> 
> On Mon, Jan 19, 2009 at 11:44 AM, Daniel Stutzbach
> <daniel at stutzbachenterprises.com> wrote:
>> On Mon, Jan 19, 2009 at 10:37 AM, Gerald Britton <gerald.britton at gmail.com>
>> wrote:
>>>    prime = (p for p in sieve() while p < 1000)
>>>    prime = takewhile(lamda p:p<1000, sieve())
>> I'm pretty sure the extra cost of evaluating the lambda at each step is tiny
>> compared to the cost of the sieve, so I don't you can make a convincing
>> argument on performance.
>>
>> Also, you know the latter is actually fewer characters, right? :-)
>>
>> --
>> Daniel Stutzbach, Ph.D.
>> President, Stutzbach Enterprises, LLC
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/tino%40wildenhain.de

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3241 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://mail.python.org/pipermail/python-dev/attachments/20090122/ebbbee7e/attachment.bin>


More information about the Python-Dev mailing list