What is the difference between a generator expression and a list comprehension in Python?