It would be more readable to write it as:
result = [(x, y) for x in range(10)
for y in range(5)
if x * y > 10]
Anyway, I'd call it a simple case.
Also, it has nice semantics - the second example has a clear execution order. This one doesn't - it can all happen at once, from the program's perspective and unless you make assumptions about order in which the items are calculated (as opposed to returned), they don't even need to be all ready before you start iterating on them. If you assume it can happen at once, the list comprehensions can be neatly mapped to parallel computations.
So, it shouldn't be that hard to optimize something like:
data = [sin(x) for x in arange(0, pi, pi/20)]
to run on a GPU.
edit: small clarifications