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)]