Lista de Python de comprensión: función de prueba de retorno

¿Hay una manera de probar el retorno de una función en una comprensión de lista (o dict)? Me gustaría evitar escribir eso:

lst = []
for x in range(10):
  bar = foo(x)
  if bar:
    lst.append(bar)

y usar una lista de comprensión en su lugar. Obviamente, no quiero escribir:

[foo(x) for x in range(10) if foo(x)]

¿asi que?

[foo(x) for x in range(10) if ??? ]

Respuestas a la pregunta(2)

Su respuesta a la pregunta