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