How would you explain the difference between a list comprehension and a generator expression in a data pipeline?