Problema: Come eseguire assegnazioni condizionali su una riga in Python?
Esempio: Diciamo che si inizia con il seguente codice.
x = 2boo = True
Vuoi impostare il valore di x
su 42
se boo
è True
, e non fare nulla altrimenti.
Tuffiamoci nei diversi modi per realizzare questo in Python. Iniziamo con una panoramica:
Esercitazione: Esegui il codice. Gli output sono tutti uguali?
Prossimo, ti immergerai in ognuno di questi metodi e aumenterai il tuo superpotere di one-liner!
Tabella del contenuto
Metodo 1: Operatore ternario
L’operatore ternario più semplice x if c else y
restituisce l’espressione x
se l’espressione booleana c
valuta a True
. Altrimenti, se l’espressione c
valuta False
, l’operatore ternario restituisce l’espressione alternativa y
.
<OnTrue> if <Condition> else <OnFalse>
Operando | Descrizione |
---|---|
<OnTrue> | L’espressione di ritorno dell’operatore in caso la condizione valuti True |
<Condition> | La condizione che determina se restituire il ramo <On True> o <On False>. |
<OnFalse> | L’espressione di ritorno dell’operatore nel caso in cui la condizione valuti False |
Torniamo al nostro problema di esempio! Volete impostare il valore di x
su 42
se boo
è True
, e non fare nulla altrimenti. Ecco come farlo in una sola riga:
x = 42 if boo else x
Mentre l’uso dell’operatore ternario funziona, vi chiederete se è possibile evitare la parte ...else x
per la chiarezza del codice? Nel prossimo metodo, imparerete come!
Se hai bisogno di migliorare la tua comprensione dell’operatore ternario, guarda il seguente video:
Puoi anche leggere il relativo articolo:
- Python One Line Ternary
Metodo 2: Dichiarazione If a linea singola
Come nel metodo precedente, volete impostare il valore di x
su 42
se boo
è True
, e non fare nulla altrimenti. Ma non volete avere un ramo else ridondante. Come fare questo in Python?
La soluzione per saltare la parte else dell’operatore ternario è sorprendentemente semplice – usate una dichiarazione if standard senza ramo else e scrivetela in una singola linea di codice:
if boo: x = 42
Per saperne di più su cosa potete impacchettare in una singola linea, guardate il mio video tutorial “If-Then-Else in One Line Python”:
Metodo 3: Sintassi Ternaria di Tuple Hack
Una forma abbreviata dell’operatore ternario è la seguente sintassi di tupla.
Sintassi: Puoi usare la sintassi di tupla (x, y)
che consiste in una tupla (x, y)
e una condizione c
racchiusa in una parentesi quadra. Ecco un modo più intuitivo di rappresentare questa sintassi di tuple.
(<OnFalse>, <OnTrue>)
Operando | Descrizione |
---|---|
<OnTrue> | L’espressione di ritorno dell’operatore nel caso che la condizione valuti True |
<Condition> | La condizione che determina se restituire il ramo <On True> o <On False>. |
<OnFalse> | L’espressione di ritorno dell’operatore nel caso in cui la condizione valuti False |
In effetti, l’ordine degli operandi <OnFalse>
e <OnTrue>
è appena invertito rispetto all’operatore ternario di base. Per prima cosa, avete il ramo che viene restituito se la condizione NON è soddisfatta. In secondo luogo, si esegue il ramo che viene restituito se la condizione tiene.
x = (x, 42)
Clever! La condizione boo
tiene, quindi il valore di ritorno passato nella variabile x
è il ramo <OnTrue>
42
.
Non preoccupatevi se questo vi confonde: non siete soli. Puoi chiarire la sintassi delle tuple una volta per tutte studiando il mio dettagliato articolo sul blog.
Articolo correlato: Python Ternary – Tuple Syntax Hack
Python One-Liners Book
I programmatori Python miglioreranno le loro abilità informatiche con questi utili one-liners.
Python One-Liners ti insegnerà come leggere e scrivere “one-liners”: dichiarazioni concise di funzionalità utili racchiuse in una singola riga di codice. Imparerete come spacchettare e comprendere sistematicamente qualsiasi linea di codice Python, e scrivere Python eloquente e potentemente compresso come un esperto.
I cinque capitoli del libro coprono suggerimenti e trucchi, espressioni regolari, apprendimento automatico, argomenti fondamentali di scienza dei dati e algoritmi utili. Spiegazioni dettagliate di frasi singole introducono concetti chiave dell’informatica e aumentano le tue capacità di codifica e di analisi. Imparerete le caratteristiche avanzate di Python come la comprensione delle liste, lo slicing, le funzioni lambda, le espressioni regolari, le funzioni map e reduce e le assegnazioni slice. Imparerete anche come:
– Sfruttare le strutture dati per risolvere problemi del mondo reale, come usare l’indicizzazione booleana per trovare città con inquinamento superiore alla media
– Usare le basi di NumPy come array, shape, axis, type, broadcasting, indicizzazione avanzata, slicing, sorting, ricerca, aggregazione e statistiche
– Calcolare le statistiche di base degli array di dati multidimensionali e gli algoritmi K-Means per l’apprendimento non supervisionato
– Creare espressioni regolari più avanzate usando grouping e named groups, lookaheads negativi, caratteri sfuggiti, spazi bianchi, set di caratteri (e set di caratteri negativi), e operatori greedy/nongreedy
– Comprendere una vasta gamma di argomenti informatici, inclusi anagrammi, palindromi, superset, permutazioni, fattoriali, numeri primi, numeri di Fibonacci, offuscamento, ricerca e ordinamento algoritmico
Per la fine del libro, saprete come scrivere Python nel modo più raffinato, e creare concise e belle opere d’arte Python in una sola riga.
Prendi ora i tuoi Python One-Liners!!!
Mentre lavorava come ricercatore nei sistemi distribuiti, il Dr. Christian Mayer ha scoperto il suo amore per l’insegnamento agli studenti di informatica.
Per aiutare gli studenti a raggiungere livelli più alti di successo con Python, ha fondato il sito di educazione alla programmazione Finxter.com. È autore del popolare libro di programmazione Python One-Liners (NoStarch 2020), coautore della serie di libri auto-pubblicati Coffee Break Python, appassionato di informatica, freelance e proprietario di uno dei 10 blog Python più grandi al mondo.
Le sue passioni sono scrivere, leggere e programmare. Ma la sua più grande passione è servire gli aspiranti codificatori attraverso Finxter e aiutarli a migliorare le loro abilità. Potete unirvi alla sua accademia gratuita via e-mail qui.