List comprehensions make new lists. Generator expressions make new generator objects. Generators are iterators, which are lazy single-use iterables. Unlike lists, generators aren't data structures. Instead they do work as you loop over them.
My name is Trey Hunner and I'm a Python trainer. Through Python Morsels I publish new Python screencasts every week and I also send out Python exercises.