If else in una lista in Python: Guida pratica con esempi

Introduzione

In Python, puoi utilizzare if else in una lista per creare espressioni compatte e leggibili. Una delle tecniche più potenti è la list comprehension, che permette di combinare il controllo dei flussi (if e else) con la creazione di nuove liste in modo più semplice e diretto rispetto ai tradizionali cicli for. In questo articolo vedremo cos’è if else in una lista in Python, come usarlo e alcuni esempi pratici per capire a fondo il suo funzionamento.


1. Cos’è if else in una lista in Python?

In Python, puoi inserire un’espressione condizionale direttamente all’interno di una lista per decidere quali valori includere. Questo approccio è utile per creare liste in modo rapido e leggibile.

L’espressione di base segue questa sintassi:

[espressione_if_true if condizione else espressione_if_false for elemento in iterable]

Vediamo un esempio per capire meglio:

numeri = [1, 2, 3, 4, 5]
risultato = ["pari" if n % 2 == 0 else "dispari" for n in numeri]
print(risultato)

Spiegazione:

  • Ciclo for: Iteriamo su ogni elemento della lista numeri.
  • Condizione if else: Se il numero è pari (n % 2 == 0), aggiungiamo la stringa "pari", altrimenti aggiungiamo "dispari".
  • Risultato: ['dispari', 'pari', 'dispari', 'pari', 'dispari']

2. Perché usare if else nelle liste?

Ci sono diversi motivi per preferire questo approccio:

  • Maggiore leggibilità: Il codice è più compatto e semplice da leggere.
  • Performance migliorata: Le list comprehension sono generalmente più veloci rispetto a costruire la lista con un ciclo for tradizionale.
  • Meno codice ripetitivo: Scrivi meno codice, ma mantieni la stessa logica.

3. Esempi pratici di if else in una lista Python

3.1 Sostituire valori in una lista

numeri = [1, -2, 3, -4, 5]
risultato = [n if n > 0 else 0 for n in numeri]
print(risultato)

Spiegazione:

  • Per ogni elemento nella lista numeri, controlliamo se è positivo.
  • Se è positivo, lo manteniamo; altrimenti, lo sostituiamo con 0.
  • Risultato: [1, 0, 3, 0, 5]

3.2 Filtrare elementi con if

Puoi anche utilizzare solo una condizione if senza else per filtrare gli elementi di una lista:

numeri = [1, 2, 3, 4, 5, 6]
risultato = [n for n in numeri if n % 2 == 0]
print(risultato)

Spiegazione:

  • Vengono inclusi solo i numeri pari.
  • Risultato: [2, 4, 6]

4. Cosa succede dietro le quinte?

Ogni list comprehension viene tradotta internamente in un ciclo for, ma Python riesce a ottimizzare l’esecuzione rispetto a un ciclo tradizionale. Vediamo un esempio più dettagliato.

Esempio: Trasformare numeri negativi in zero

List comprehension:

numeri = [-3, 5, -1, 8, 0, -7]
risultato = [n if n >= 0 else 0 for n in numeri]
print(risultato)

Spiegazione:

  • Il codice crea una nuova lista in cui ogni elemento di numeri viene lasciato inalterato se è maggiore o uguale a zero.
  • Se l’elemento è negativo, viene sostituito con 0.
  • Risultato: [0, 5, 0, 8, 0, 0]

Versione equivalente con il ciclo for

numeri = [-3, 5, -1, 8, 0, -7]
risultato = []

for n in numeri:
    if n >= 0:
        risultato.append(n)
    else:
        risultato.append(0)

print(risultato)

Cosa succede qui:

  1. Creiamo una lista vuota risultato.
  2. Iteriamo su ogni elemento della lista numeri.
  3. Usiamo un’istruzione if else per verificare se l’elemento è maggiore o uguale a zero:
    • Se la condizione è vera, aggiungiamo l’elemento originale.
    • Altrimenti, aggiungiamo 0.
  4. Alla fine, stampiamo la lista risultante, che sarà la stessa della list comprehension: [0, 5, 0, 8, 0, 0].

5. Errori comuni e come evitarli

  1. Dimenticare l’ordine corretto di if else
    Ricorda che l’ordine di if else in una list comprehension è diverso rispetto a una normale istruzione if. ["pari" if n % 2 == 0 else "dispari" for n in numeri] Se inverti if e else, Python genererà un errore di sintassi.
  2. Evitare espressioni troppo complesse
    Cerca di mantenere le espressioni semplici. Se la logica diventa complicata, considera di usare un ciclo for normale per mantenere il codice leggibile.

Conclusione

In questo articolo, abbiamo esplorato come utilizzare if else in una lista in Python attraverso list comprehension. Questo approccio permette di scrivere codice più compatto e leggibile, con un notevole risparmio di tempo. Abbiamo visto diversi esempi pratici e spiegato cosa accade dietro le quinte, rendendo il concetto chiaro anche per chi è alle prime armi con Python.


Risorse aggiuntive

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Torna in alto