La list comprehension in python

Cos'è la list comprehension? E' una tecnica procedurale per creare liste nel linguaggio python.

A cosa serve? Permette di scrivere un espressione tramite delle clausole e condizioni, in grado di creare automaticamente una lista con determinati valori. Grazie alla list comprehnsion, una espressione svolge il lavoro di più istruzioni e righe di codice.

Come funziona la list comprehnsion

L'espressione deve essere scritta all'interno delle parentesi [ ] perché l'output è una lista di elementi.

[ espressione ]

L'espressione può essere composta da comandi, clausole e calcoli matematici.

Un esempio pratico

Voglio creare una lista composta da numeri da 0 a 9.

nomelista = [ i for i in range(10) ]

L'espressione [ i for i in range(10) ] assegna il valore i a ogni elemento in un ciclo di dieci iterazioni.

La lista viene creata automaticamente con i seguenti contenuti:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Se avessi voluto ottenere lo stesso risultato con le istruzioni di un programma, avrei dovuto scrivere tre righe di codice:

nomelista=[]
for x in range(10):
nomelista.append(x)

E' quindi più rapido usare la list comprehension.

Esempi pratici di list comprehension

Ecco una lista di esempi pratici per capire meglio il funzionamento della list comprehension in python.

Esempio 1

Per creare una lista composta dai quadrati dei numeri da 0 a 9 scrivo:

nomelista=[x**2 for x in range(10)]

Il risultato è una lista con i seguenti elementi:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Esempio 2

Per leggere gli elementi di una lista, moltiplicarli per un valore e assegnare il risultato a un'altra lista scrivo:

lista1=[3,4,5]
lista2=[item*2 for item in lista1]

In questo caso l'espressione legge gli elementi ( item ) della lista1, li moltiplica per 2 e assegna il prodotto alla lista2

L'espressione crea la lista lista2 con i seguenti elementi:

[6, 8, 10]

Esempio 3

In questa espressione aggiungo una condizione al calcolo.

lista1=[3,4,5]
lista3=[item*2 for item in lista1 if item % 2 == 0]

In questo caso ho aggiunto una condizione if "item % 2 == 0" all'espressione.

L'espressione effettua il calcolo (item*2) soltanto se il valore dell'elemento (item) della lista1 è divisibile per due senza resto (item % 2 == 0), ossia è un numero pari.

L'espressione crea la lista lista3 con i seguenti elementi:

[8]

Ha creato un solo elemento perché lista1 è composta dagli elementi [3,4,5] e soltanto uno e pari (4).

Quindi 4*2 è uguale a 8.

Esempio 4

In questa espressione leggo la lettera iniziale degli elementi alfanumerici della lista1 e la assegno alla lista2

lista1=["Roma", "Napoli", "Firenze"]
lista2 = [ word[0] for word in lista1 ]

L'espressione crea la lista lista2 con i seguenti elementi:

['R', 'N', 'F']

Esempio 5

In questo esempio trasformo in maiuscolo tutti gli elementi di una lista:

lista1=["Roma", "Napoli", "Firenze"]
lista2 = [ x.upper() for x in lista1 ]

Il risultato finale in lista2 è il seguente:

['ROMA', 'NAPOLI', 'FIRENZE']

Per trasformarli in minuscolo mi basta scrivere la funzione opposta ( lower )

lista2 = [ x.lower() for x in lista1 ]

Ora il contenuto di lista2 è il seguente:

['roma', 'napoli', 'firenze']

E così via.

Esempio 6

In questa espressione voglio selezionare da una stringa soltanto gli elementi numerici:

stringa="Guida Python 2018"
lista1 = [x for x in stringa if x.isdigit()]

Il risultato finale in lista1 è il seguente:

['2', '0', '1', '8']

Per selezionare soltanto gli elementi alfanumerici, invece, devo usare il metodo isalpha().

lista1 = [x for x in stringa if x.isalpha()]

Ora il contenuto di lista1 è il seguente:

['G', 'u', 'i', 'd', 'a', 'P', 'y', 't', 'h', 'o', 'n']

E così via.

Esempio 7

La list comprehension python mi permette anche di fare una ricerca in un file.

Ho il file "test.txt" con tre record:

Corso Python a Roma
Corso Cobol a Milano
Corso C a Verona

Per selezionare con un espressione tutti i record del file che contengono il termine "Python"

fh = open("test.txt", "r")
lista1 = [i for i in fh if "Python" in i]

L'espressione seleziona soltanto un record e lo aggiunge alla lista

Corso Python a Roma

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Le liste su Python

  1. Cos'è una lista
  2. Come estrarre elementi
  3. Come eliminare elementi
  4. Come aggiungere elementi
  5. Come contare le occorrenze in una lista
  6. Come cercare un elemento nella lista
  7. Come ordinare una lista
  8. Come invertire le posizioni della lista
  9. Come usare la list comprehension
  10. Come fare una lista nidificata
  11. Come convertire una tupla in lista