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
Operandi dell’operatore ternario

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

Sintassi Ternaria di Python

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
Sintassi della tupla dell’operatore ternario

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

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.