
Iterator expression?
Better. Or perhaps generator expression? To maintain the link with generator functions, since the underlying mechanism *will* be mostly the same. Yes, I like that even better. BTW, while Alex has shown that a generator function with no free variables runs quite fast, a generator expression that uses variables from the surrounding scope will have to use the nested scopes machinery to access those, unlike a list comprehension; not only does this run slower, but it also slows down all other uses of that variable in the surrounding scope (because it becomes a "cell" throughout the scope). Someone could time how well y = 1 sum([x*y for x in R]) fares compared to y = 1 def gen(): for x in R: yield y*y sum(gen()) for R in (range(N) for N in (100, 1000, 10000)). --Guido van Rossum (home page: http://www.python.org/~guido/)