
Python ha espressioni condizionali (a volte chiamate “operatore ternario”). Puoi scrivere un’operazione come un’istruzione se in una riga con espressioni condizionali.
In questo articolo vengono descritti i seguenti contenuti.
- Nozioni di base sulle espressioni condizionali
- se … elif … altro … da espressioni condizionali
- Elenca le comprensioni e le espressioni condizionali
- Espressioni Lambda ed espressioni condizionali
Vedere il seguente articolo per l’istruzione se.
Nozioni di base sulle espressioni condizionali
In Python, l’espressione condizionale è scritta come segue.
La condizione viene valutata per prima. Se la condizione è True, viene valutato X e viene restituito il suo valore, e se la condizione è False, viene valutato Y e viene restituito il suo valore.
Se vuoi cambiare il valore in base alla condizione, descrivi semplicemente ogni valore così com’è.
a = 1
result = 'even' if a % 2 == 0 else 'odd'
print(result)
# odd
a = 2
result = 'even' if a % 2 == 0 else 'odd'
print(result)
# even
Se vuoi cambiare l’operazione in base alle condizioni, descrivi ogni espressione.
a = 1
result = a * 2 if a % 2 == 0 else a * 3
print(result)
# 3
a = 2
result = a * 2 if a % 2 == 0 else a * 3
print(result)
# 4
È possibile anche un’espressione che non riporta un valore (un’espressione che richiede None). Entrambe le espressioni vengono valutate ed eseguite a seconda della condizione.
a = 1
print('even') if a % 2 == 0 else print('odd')
# odd
L’esempio sopra è equivalente al codice seguente scritto nell’istruzione if.
a = 1
if a % 2 == 0:
print('even')
else:
print('odd')
# odd
Puoi anche concatenare più espressioni condizionali con ee o.
a = -2
result = 'negative and even' if a < 0 and a % 2 == 0 else 'positive or odd'
print(result)
# negative and even
a = -1
result = 'negative and even' if a < 0 and a % 2 == 0 else 'positive or odd'
print(result)
# positive or odd
se … elif … altro … da espressioni condizionali
Combinando le espressioni condizionali, puoi scrivere un’operazione come if … elif … else … in una riga.
X if condition1 else Y if condition2 else Z
Tuttavia, è difficile da capire, quindi potrebbe essere meglio non utilizzare spesso.
a = 2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# positive
a = 0
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# zero
a = -2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# negative
Sono possibili le due interpretazioni seguenti, ma viene elaborata come la prima (1).
1. X if condition1 else (Y if condition2 else Z)
2. (X if condition1 else Y) if condition2 else Z
Nel codice di esempio riportato di seguito, la prima espressione è considerata la seconda anziché la terza.
a = -2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# negative
result = 'negative' if a < 0 else ('positive' if a > 0 else 'zero')
print(result)
# negative
result = ('negative' if a < 0 else 'positive') if a > 0 else 'zero'
print(result)
# zero
Elenca le comprensioni e le espressioni condizionali
Utilizzando le espressioni condizionali nelle comprensioni degli elenchi, l’operazione può essere applicata agli elementi dell’elenco dalla condizione.
l = ['even' if i % 2 == 0 else i for i in range(10)]
print(l)
# ['even', 1, 'even', 3, 'even', 5, 'even', 7, 'even', 9]
l = [i * 10 if i % 2 == 0 else i for i in range(10)]
print(l)
# [0, 1, 20, 3, 40, 5, 60, 7, 80, 9]
Vedere il seguente articolo per i dettagli sulla comprensione degli elenchi.
Espressioni Lambda ed espressioni condizionali
Le espressioni condizionali sono utili anche quando si desidera applicare operazioni come l’istruzione if nelle espressioni lambda.
get_odd_even = lambda x: 'even' if x % 2 == 0 else 'odd'
print(get_odd_even(1))
# odd
print(get_odd_even(2))
# even
Nell’esempio precedente, il nome è assegnato all’espressione lambda per comodità, ma non è consigliato in PEP8.
Vedere l’articolo seguente per i dettagli sulle espressioni lambda.