When in doubt, don't use list comprehensions.
Try import this
in your Python shell and read the second line:
Explicit is better than implicit
This type of compounding of list comprehensions will puzzle a lot of Python programmers so at least add a comment to explain that you are removing strings and flattening the remaining list.
Do use list comprehensions where they are clear and easy to understand, and especially, do use them when they are idiomatic, i.e. commonly used because they are the most efficient or elegant way to express something. For instance, this Python Idioms article gives the following example:
result = [3*d.Count for d in data if d.Count > 4]
It is clear, simple and straightforward. Nesting list comprehensions is not too bad if you pay attention to formatting, and perhaps add a comment because the braces help the reader to decompose the expression. But the solution that was accepted for this problem is too complex and confusing in my opinion. It oversteps the bounds and makes the code unreadable for too many people. It is better to unroll at least one iteration into a for loop.