Comprensione delle liste Python spiegata con esempi

Le list comprehension forniscono un modo conciso per creare liste in Python. Sono più leggibili e spesso più efficienti rispetto all'uso di loop tradizionali. Questo articolo esplorerà cosa sono le list comprehension, come funzionano e fornirà esempi per illustrarne l'uso.

Che cosa è una List Comprehension?

Una list comprehension è un modo compatto per elaborare tutti o parte degli elementi in una raccolta e restituire un elenco con i risultati. La sintassi di una list comprehension è:

[expression for item in iterable if condition]

Qui, expression è l'elemento corrente nell'iterazione, ma è anche il risultato, che puoi manipolare prima che finisca come un elemento di un elenco. iterable è la raccolta che stai eseguendo il ciclo e condition è un filtro facoltativo che include solo gli elementi che soddisfano la condizione.

Esempi di base

Creazione di un elenco di quadrati

Per creare un elenco di quadrati di numeri da 0 a 9, puoi utilizzare una comprensione di elenco come segue:

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
squares = [x ** 2 for x in numbers]
print(squares)

Produzione:

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

Filtraggio degli elementi

Puoi anche aggiungere una condizione per filtrare gli elementi. Ad esempio, per ottenere solo i numeri pari dall'elenco:

even_squares = [x ** 2 for x in numbers if x % 2 == 0]
print(even_squares)

Produzione:

[0, 4, 16, 36, 64]

Appiattimento di un elenco di elenchi

Se hai una lista di liste e vuoi appiattirla, puoi usare una comprensione di lista:

list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [item for sublist in list_of_lists for item in sublist]
print(flattened)

Produzione:

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

Esempi avanzati

Applicazione delle funzioni

È possibile applicare funzioni all'interno di una list comprehension. Ad esempio, per convertire un elenco di stringhe in maiuscolo:

words = ['hello', 'world', 'python']
uppercase_words = [word.upper() for word in words]
print(uppercase_words)

Produzione:

['HELLO', 'WORLD', 'PYTHON']

Comprensioni nidificate

Le list comprehension possono essere annidate. Ad esempio, per creare una lista di tuple (i, j) dove i e j sono entrambi elementi di due liste:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
pairs = [(i, j) for i in list1 for j in list2]
print(pairs)

Produzione:

[(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c'), (3, 'a'), (3, 'b'), (3, 'c')]

Conclusione

Le list comprehension offrono un modo potente e conciso per generare liste in Python. Possono semplificare il tuo codice e renderlo più leggibile sostituendo più righe di codice loop con una singola riga di comprensioni. Fai pratica usando le list comprehension per acquisire maggiore dimestichezza con la loro sintassi e capacità.