Sintaxe de compreensão inconsistente?

Eu apenas tropecei no que parece ser uma falha na sintaxe python - ou então eu estou perdendo alguma coisa.

Veja isso:

[x for x in range(30) if x % 2 == 0]

Mas este é um erro de sintaxe:

[x for x in range(30) if x % 2 == 0 else 5]

Se você tem umelse cláusula, você tem que escrever:

[x if x % 2 == 0 else 5 for x in range (30)]

Mas este é um erro de sintaxe:

[x if x %2 == 0 for x in range(30)]

o que estou perdendo? Por que isso é tão inconsistente?

questionAnswers(3)

yourAnswerToTheQuestion