The generator expression should be used if you're iterating once over anything. But in case if you want to store and use the generated results, then you're advised to use a list comprehension.
The main reason for choosing among one of these is the performance, so it is advised not to worry about performance you can pick anyone.
def gen():
return (something for something in get_some_stuff())
print(gen()[:2])# generators don't support indexing
print([5,6] + gen()) # generators can't be added to lists