Thanks, Brian! That explanation cleared up a lot for me.
I found an explanation for the differing behavior of Python 3: http://docs.python.org/3.0/whatsnew/3.0.html"Also note that list comprehensions have different semantics: they are closer to syntactic sugar for a generator expression inside a list() constructor...".
best,
Jonathan
