A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://mail.python.org/pipermail/python-dev/2009-January/085254.html below:

Add a "while" clause to generator expressions

[Python-Dev] PEP 3142: Add a "while" clause to generator expressionsNick Coghlan ncoghlan at gmail.com
Tue Jan 20 21:38:05 CET 2009
Antoine Pitrou wrote:
> Alexey G. Shpagin <python-3000 <at> udmvt.ru> writes:
>> Example will look like
>>  g = (n for n in range(100) if n*n < 50 or else_break())
> 
> Please don't suggest any hack involving raising StopIteration as part of a
> conditional statement in a generator expression. It might work today, but it
> might as well break tomorrow as it's only a side-effect of the implementation,
> not an official property of the language.

As RDM noted, it actually is documented behaviour due to the equivalence
between generator expressions and the corresponding generator functions.

Writing a separate generator function is typically going to be cleaner
and more readable though.

Cheers,
Nick.

P.S. Here's another cute hack for terminating an iterator early:

>>> list(iter((n for n in range(10)).next, 5))
[0, 1, 2, 3, 4]

(it's nowhere near as flexible as itertools.takewhile, of course)

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4