pitón pitón idiomático para bucle si otra declaración

Como puedo usarelse declaración en una pitón idiomáticafor ¿lazo? Sinelse Puedo escribir, por ejemplo:

res = [i for i in [1,2,3,4,5] if i < 4]

El resultado es:[1, 2, 3]

La forma normal del código anterior es:

res = []
for i in [1,2,3,4,5]:
    if i < 4:
        res.append(i)

El resultado es el mismo que en forma idiomática:[1, 2, 3]

Y quiero esto:

res = [i for i in [1,2,3,4,5] if i < 4 else 0]

yo obtengoSyntaxError: invalid syntax. El resultado debería ser:[1, 2, 3, 0, 0] El código normal de esto es:

res = []
for i in [1,2,3,4,5]:
    if i < 4:
        res.append(i)
    else:
        res.append(0)

El resultado es:[1, 2, 3, 0, 0]

Respuestas a la pregunta(1)

Su respuesta a la pregunta