Think about a function that I'm calling for it's side effects, not return values (like printing to screen, updating GUI, printing to a file, etc.).
[fun_with_side_effects(x) for x in y if (...conditions...)]
for x in y:
It is very anti-Pythonic to do so, and any seasoned Pythonista will give you hell over it. The intermediate list is thrown away after it is created, and it could potentially be very, very large, and therefore expensive to create.