<s>[INST] Generator Expressions vs. List Comprehension When should you use generator expressions and when should you use list comprehensions in Python?
# Generator expression
(x*2 for x in range(256))

# List comprehension
[x*2 for x in range(256)]

 [/INST] John's answer is good (that list comprehensions are better when you want to iterate over something multiple times).  However, it's also worth noting that you should use a list if you want to use any of the list methods.  For example, the following code won't work:
def gen():
    return (something for something in get_some_stuff())

print gen()[:2]     # generators don't support indexing or slicing
print [5,6] + gen() # generators can't be added to lists

Basically, use a generator expression if all you're doing is iterating once.  If you want to store and use the generated results, then you're probably better off with a list comprehension.
Since performance is the most common reason to choose one over the other, my advice is to not worry about it and just pick one; if you find that your program is running too slowly, then and only then should you go back and worry about tuning your code.
 </s>