2015-11-12 28 views
7

Come posso utilizzare l'istruzione else in un loop Python for? Senza else posso scrivere es:python python idiomatico per il ciclo if else statement

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

Il risultato è: [1, 2, 3]

La forma normale del codice sopra è:

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

Il risultato è lo stesso in forma idiomatica: [1, 2, 3]

E voglio questo:

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

Ottengo SyntaxError: invalid syntax. Il risultato dovrebbe essere: [1, 2, 3, 0, 0] Il codice normale di questo è:

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

Il risultato è: [1, 2, 3, 0, 0]

risposta

11

Eri vicino, basta spostare il ternario alla parte della lista di comprensione in cui si stai creando il valore.

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