try there the that than statement say one more loop for conditions conditionals branches are and after python if-statement for-loop idiomatic

python - there - pitón pitón idiomática para el bucle, si no declaración



if there are more than one except branches after the try we can say that (1)

¿Cómo puedo usar la instrucción else en un Python idiomático for ciclo? Sin else , 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 la forma idiomática: [1, 2, 3]

Y quiero esto:

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

Obtengo SyntaxError: 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]


Estuviste cerca, solo tienes que mover el ternario a la parte de la lista de comprensión donde creas el valor.

res = [i if i < 4 else 0 for i in range(1,6)]