PEP 289: Generator Expressions (please comment)

Raymond Hettinger python at rcn.com
Thu Oct 23 15:58:31 EDT 2003


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.


Raymond Hettinger




More information about the Python-list mailing list