2009-11-06 10 views

risposta

157
a = '123' if b else '456' 
+10

Questo operatore ternario è stato introdotto in Python 2.5. –

+0

grazie! esattamente quello che stavo cercando. non è riuscito a trovarlo sul sito Web di python docs. – huy

+0

Per riferimento futuro, ecco la documentazione di Python per l'espressione condizionale: http://docs.python.org/reference/expressions.html#boolean-operations –

9

La mia versione criptico ...

a = ['123', '456'][b == True] 
+1

Questo era uno dei vecchi approcci prima che l'affermazione su riga singola fosse possibile, giusto? Un po 'come come si può fare con logico: 'Vero e" foo "o" bar "' – jdi

14

Mentre a = 'foo' if True else 'bar' è il modo più moderno di fare ternario if (Python 2.5+), un equivalente 1-a-1 della versione potrebbe essere:

a = (b == True and "123" or "456") 

... che in Python dovrebbe essere ridotto a:

a = b is True and "123" or "456" 

... o se semplicemente wan t per testare la veridicità del valore di b in generale ...

a = b and "123" or "456" 

? : può letteralmente essere scambiati per and or

+2

Che tipo di magia nera è questo? Grazie – Inversus

+1

Devo notare che l'approccio and..or qui può ritorcersi contro se il valore "123" fosse in realtà una stringa vuota o valesse un valore falso. L'if..else è un po 'più sicuro. – jdi

+0

Neat! Grazie per questo. –

Problemi correlati