PEP 289: Generator Expressions (please comment)

John Roth newsgroups at jhrothjr.com
Thu Oct 23 20:28:46 EDT 2003


"Raymond Hettinger" <python at rcn.com> wrote in message
news:5d83790c.0310231158.65595858 at posting.google.com...
> Peter Norvig's creative thinking triggered renewed interest in PEP 289.
> That led to a number of contributors helping to re-work the pep details
> into a form that has been well received on the python-dev list:
>
>     http://www.python.org/peps/pep-0289.html
>
> In brief, the PEP proposes a list comprehension style syntax for
> creating fast, memory efficient generator expressions on the fly:
>
>     sum(x*x for x in roots)
>     min(d.temperature()*9/5 + 32 for d in days)
>     Set(word.lower() for word in text.split() if len(word) < 5)
>     dict( (k, somefunc(k)) for k in keylist )
>     dotproduct = sum(x*y for x,y in itertools.izip(xvec, yvec))
>     bestplayer, bestscore = max( (p.score, p.name) for p in players )
>
> Each of the above runs without creating a full list in memory,
> which saves allocation time, conserves resources, and exploits
> cache locality.
>
> The new form is highly expressive and greatly enhances the utility
> of the many python functions and methods that accept iterable arguments.

I like it.

The final example in point 2 is incorrect. It currently says:

g = (x**2 for i in range(10))

x and i should be changed to match.

John Roth







John Roth
>
>
> Raymond Hettinger






More information about the Python-list mailing list