Operatore ternario in Python - Cosa? Come? Perché?

Operatore ternario in Python - Cosa? Come? Perché?

Nel mondo della programmazione, avere la capacità di semplificare il codice è prezioso sia per la leggibilità che per l'efficienza del codice. Uno strumento a tua disposizione per farlo in Python è l'operatore ternario.

L'operatore ternario di Python (o espressione condizionale) consente di valutare affermazioni in base al fatto che una determinata condizione sia vera o falsa, il tutto in una singola riga di codice. Può sostituire efficacemente un'istruzione if-else su più righe rendendo il codice più compatto.

Mentre esploriamo il potenziale degli operatori ternari di Python , scoprirai che possono essere molto utili per ottimizzare i tuoi programmi. Che si tratti di semplificare la logica decisionale o semplificare il codice, l'utilizzo efficace degli operatori ternari di Python può rendere il codice molto più semplice da leggere e comprendere.

Quindi, diamo un'occhiata sotto il cofano e vediamo di cosa si tratta!

Operatore ternario in Python - Cosa?  Come?  Perché?

Sommario

Che cos'è un operatore ternario Python?

Gli operatori ternari di Python offrono un modo conciso per valutare un'istruzione in base al fatto che una condizione sia vera o falsa, rendendo il codice compatto e più facile da leggere. Alcune persone le chiamano anche espressioni condizionali o operatori condizionali.

Sintassi di base

L'operatore ternario è stato introdotto in Python 2.5 e ha una struttura semplice composta da tre operandi:

#demonstrate python ternary operator syntax

result = value_if_true if condition else value_if_false

Questa sintassi si compone di tre parti principali:

  1. La condizione : Questa è un'espressione booleana valutata come vera o falsa, a

  2. value_if_true : il valore che viene restituito se l'espressione booleana è vera.

  3. value_if_false : il valore che viene restituito se l'espressione booleana è falsa.

Casi d'uso comuni

Gli operatori ternari o le espressioni condizionali vengono spesso utilizzati per semplificare brevi istruzioni if-else nel codice. Ecco alcuni esempi per illustrare come applicare un operatore ternario Python:

Esempio 1: Assegnazione di un valore in base a una condizione

 age = 25
 
category = "adult" if age >= 18 else "minor"

In questo esempio, l'operatore ternario Python assegna il valore " adulto " alla variabile categoria se l' età è maggiore o uguale a 18 anni, e " minore " altrimenti.

Supponendo di aver scelto di utilizzare un'istruzione if-else invece di un operatore ternario Python, sarebbe simile a questo:

age = 25

if age > 18:
   category = "Adult"
else:
   category = "Minor"

In questo caso, possiamo vedere che l'uso di un operatore ternario rende il codice molto più compatto e facile da leggere.

Esempio 2: Selezione del più piccolo dei due numeri

a = 10
b = 15

smallest = a if a < b else b

Qui, l'operatore condizionale ternario ti aiuta a determinare il più piccolo di due numeri restituendo il valore più piccolo tra a e b.

Esempio 3: Assegnazione del valore minimo di due variabili:

num1 = 10
num2 = 20

min_num = num1 if num1 < num2 else num2
print(min_num)

L'output per questo esempio sarà 10, poiché l'operatore ternario valuta la condizione e restituisce il valore più piccolo.

Esempio 4: determinare se un numero è pari o dispari:

num = 5

result = "Even" if num % 2 == 0 else "Odd" 
print(result)

L'output per questo esempio sarà Odd , poiché la condizione restituisce False e l'operatore ternario restituisce il risultato appropriato.

Questi esempi dimostrano come un operatore ternario Python può rendere il tuo codice più conciso e più facile da leggere. Usando la sintassi di base e comprendendo i casi d'uso comuni, puoi incorporare efficacemente un operatore ternario nel tuo codice Python.

Nelle applicazioni più pratiche, puoi usarlo insieme a un loop per controllare, valutare o eseguire operazioni sui dati.

Per una gestione dei dati più efficiente, puoi guardare questo video su Come gestire i dati mancanti in Python con l'interpolazione.

Come usare l'operatore ternario di Python

La normale sintassi dell'operatore ternario if-else è solo uno dei molti modi in cui possiamo implementare un operatore ternario Python. Possiamo anche implementarlo utilizzando strutture di dati comuni come dizionari Python, tuple ed elenchi.

Diamo un'occhiata ad alcuni di questi metodi:

Mappatura del dizionario

Puoi emulare un operatore ternario Python con la mappatura del dizionario per archiviare i risultati per condizioni diverse. Può essere utile quando si dispone di un insieme finito di condizioni e risultati corrispondenti.

Ecco un esempio che utilizza la mappatura del dizionario per verificare se un numero è pari o dispari:

#Implement python ternary operator with dictionary mapping

number = 7
result = {True: "Even", False: "Odd"}

is_even = result[number % 2 == 0]

Il programma precedente restituirà " Odd " poiché l'espressione booleana tra parentesi restituisce False.

Uso delle tuple

Le tuple Python sono una struttura dati ordinata e immutabile che puoi utilizzare per implementare operatori ternari. Fondamentalmente, l'operatore ternario di tuple ha una sintassi di:

(condition_is_false, condition_is_true)[condition]

The condition evaluates to either True or False which in Python are equal to the integers 1 and o respectively.

So, the tuple returns whichever element matches the resulting index. For example, if the condition evaluates to True which is 1, the code return condition_is true.

Otherwise, it evaluates to False which is 0, and the tuple returns condition_is_false. Here’s an example below:

#Implement ternary operator with tuples

c = False
result = ('a', 'b')[c]

The tuple will store the value ‘a‘ in the variable result since the condition evaluates to False. Most developers do not like using this format for ternary operators as it can be a little confusing, which defeats the purpose.

Lambda Functions

Lambda functions are anonymous single-line functions that you can use as an alternative to ternary operators. They allow you to perform simple calculations and return a result based on a given condition.

Here’s an example of using a lambda function to find the maximum of two numbers:

#implement python ternary operator with lambda functions

a, b = 10, 20
max_value = (lambda: a, lambda: b)[a < b]()

The lambda function returns a if the condition evaluates to True. Otherwise, it returns b.

What is a Nested Ternary Operator?

Un operatore ternario annidato è un'espressione condizionale con due o più espressioni booleane. Puoi crearlo concatenando due o più condizioni booleane insieme per controllare più condizioni.

Possiamo utilizzare questi tipi di operatori ternari per modellare istruzioni " elif " e blocchi if-else nidificati.

Diamo un'occhiata a un esempio di un operatore ternario Python annidato .

age = 21

#Normal elif statement
if age< 21:
   print('Child')
elif age< 25:
   print ('young adult')
else:
   print('Adult')

#elif statement as a ternary operator
print('Child') if age < 18 else print('Young adult') if age <21 else print ('Old Person')

#Output: 'Young Adult'

È possibile aggiungere parentesi all'operatore ternario di Python se si desidera imitare un'istruzione if-else nidificata. Tuttavia, questa non è una buona pratica in quanto l'operatore ternario può diventare molto lungo e illeggibile.

In casi come questo, è meglio utilizzare un blocco if-else standard nel codice.

Quali sono i vantaggi dell'operatore ternario Python?

Ci sono molti vantaggi che ottieni dall'uso dell'operatore ternario Python nel tuo codice. Alcuni di questi vantaggi includono:

Leggibilità e brevità del codice

L'uso dell'operatore ternario Python può rendere il tuo codice più conciso, permettendoti di scrivere espressioni condizionali in una singola riga.

Ciò è particolarmente utile quando si ha a che fare con condizioni semplici e dirette. Il tuo codice può essere più leggibile e più facile da capire, in quanto riduce la necessità di più righe di istruzioni if-else.

Considerazioni sulle prestazioni

Sebbene l'operatore ternario possa portare a un codice più compatto, il suo impatto sulle prestazioni è generalmente minimo. L'interprete di Python è progettato per ottimizzare l'esecuzione del codice, il che significa che sia l'operatore ternario che le istruzioni if-else hanno generalmente caratteristiche di prestazioni simili.

Quando scrivi codice Python , dai la priorità alla leggibilità e alla manutenibilità rispetto alle prestazioni, a meno che tu non stia lavorando con applicazioni critiche per le prestazioni.

Ricorda che situazioni diverse richiedono approcci diversi. A volte, l'uso dell'operatore ternario è vantaggioso, mentre in altri casi, attenersi alle tradizionali affermazioni if-else può essere più adatto.

Svantaggi dell'operatore ternario di Python

Gli operatori ternari sono ottimi per semplificare il codice e renderlo compatto. Tuttavia, il loro utilizzo potrebbe presentare alcuni inconvenienti.

Ecco alcuni di questi inconvenienti:

Gli operatori ternari nidificati possono diventare complessi

In alcuni casi, l'operatore ternario può rendere il codice meno leggibile, in particolare quando si utilizzano condizioni complesse o nidificate. In queste situazioni, incorporare istruzioni if-else convenzionali può essere più appropriato per mantenere la chiarezza del codice.

Ciò è particolarmente vero quando si tenta di sostituire un'istruzione if-else nidificata con un operatore ternario. Raramente si traduce in codice pulito.

Ogni operando è un'espressione

Tutti gli operandi oi valori restituiti in un operatore ternario Python sono espressioni, non istruzioni. Il tentativo di utilizzare un'istruzione di assegnazione all'interno della sintassi dell'operatore ternario porterà a un errore di sintassi.

Puoi dare un'occhiata a un esempio di questo nel codice qui sotto.

'Adult' if True else x = 44

Come puoi vedere di seguito, risulta in un errore di sintassi. In casi come questo, dovresti usare un blocco if-else invece di un operatore condizionale.

Operatore ternario in Python - Cosa?  Come?  Perché?

Migliori Pratiche e Suggerimenti

Quando usi l'operatore ternario in Python, ci sono alcune best practice e suggerimenti per aiutarti a scrivere codice pulito, efficiente e leggibile.

Innanzitutto, assicurati che la tua espressione condizionale sia breve e concisa. Condizioni lunghe e complesse potrebbero rendere difficile la comprensione della logica alla base dell'operatore ternario.

Se ti trovi di fronte a una condizione complessa, potrebbe essere meglio utilizzare invece una normale istruzione if-else.

#demonstrate nested ternary operator
# Good example 
result = "positive" if number >= 0 else "negative" 


# Bad example 
result = (a + b if (x > 10 and y > 20) else c + d) if (z > 30 and p > 40) else ...

In secondo luogo, evita di annidare più operatori ternari, che possono portare a codice confuso e illeggibile. Come con le condizioni complesse, prendi in considerazione l'utilizzo di un'istruzione if-else per una maggiore leggibilità.

# Good example 

x = A if condition1 else B if condition2 else C 

# Bad example 
x = A if condition1 else (B if condition2 else (C if condition3 else ...)) 

Infine, tieni presente i casi d'uso appropriati per l'operatore ternario. È più adatto per incarichi semplici a riga singola in cui la condizione e il risultato sono entrambi di facile comprensione.

Se il tuo codice prevede logica più complessa, cicli o assegnazioni multiple, è meglio attenersi alle tradizionali istruzioni if-else.

Domande frequenti sugli operatori ternari di Python

Ecco alcune domande che i nuovi programmatori di solito ci fanno sugli operatori ternari:

Come usi l'operatore ternario in un'istruzione return in Python?

È possibile utilizzare un operatore ternario Python nell'istruzione return di una funzione. Tutto quello che devi fare è aggiungerlo alla dichiarazione di ritorno.

Ecco un esempio:

#program to check cheese age

def is_legal(age):
  return 'legal' if age > 18 else 'Not legal'

Un operatore ternario è più veloce di un'istruzione if-else in Python?

No, entrambi hanno caratteristiche prestazionali simili. Un operatore ternario e un'istruzione if-else hanno entrambi una complessità temporale O(1).


Cosè il sé in Python: esempi del mondo reale

Cosè il sé in Python: esempi del mondo reale

Cos'è il sé in Python: esempi del mondo reale

Come salvare e caricare un file RDS in R

Come salvare e caricare un file RDS in R

Imparerai come salvare e caricare oggetti da un file .rds in R. Questo blog tratterà anche come importare oggetti da R a LuckyTemplates.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Questo tutorial illustrerà come utilizzare la tecnica di visualizzazione dinamica multi-thread per creare approfondimenti dalle visualizzazioni di dati dinamici nei report.

Introduzione al filtraggio del contesto in LuckyTemplates

Introduzione al filtraggio del contesto in LuckyTemplates

In questo articolo, esaminerò il contesto del filtro. Il contesto del filtro è uno degli argomenti principali che qualsiasi utente di LuckyTemplates dovrebbe inizialmente conoscere.

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

Voglio mostrare come il servizio online di LuckyTemplates Apps può aiutare nella gestione di diversi report e approfondimenti generati da varie fonti.

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Scopri come elaborare le modifiche al margine di profitto utilizzando tecniche come la ramificazione delle misure e la combinazione di formule DAX in LuckyTemplates.

Idee di materializzazione per cache di dati in DAX Studio

Idee di materializzazione per cache di dati in DAX Studio

Questo tutorial discuterà delle idee di materializzazione delle cache di dati e di come influiscono sulle prestazioni dei DAX nel fornire risultati.

Reporting aziendale tramite LuckyTemplates

Reporting aziendale tramite LuckyTemplates

Se finora utilizzi ancora Excel, questo è il momento migliore per iniziare a utilizzare LuckyTemplates per le tue esigenze di reportistica aziendale.

Che cosè il gateway LuckyTemplates? Tutto quello che devi sapere

Che cosè il gateway LuckyTemplates? Tutto quello che devi sapere

Che cos'è il gateway LuckyTemplates? Tutto quello che devi sapere