But the executive summary remains: the generator wins because it doesn't have to materialize the whole list.
But what would happen if the generator were replaced with in-line code that computes the values and feeds them to an accumulator object, such as might result from an accumulator syntax that gets inline-expanded in the same way as a list comp?
I'd worry that writing an accumilator would become much less natural. The cool thing of iterators and generators is that you can write both the source (generator) and the destination (iterator consumer) as a simple loop, which is how you usually think about it.
--Guido van Rossum (home page: http://www.python.org/%7Eguido/)