Comprensione dell'elenco in Python - Con esempi
Pubblicato: 2022-02-18In Python, la comprensione degli elenchi ti aiuta a creare nuovi elenchi da iterabili esistenti, come elenchi, stringhe e tuple.
La loro sintassi succinta ti consente di creare nuovi elenchi in una sola riga di codice. E questo tutorial ti insegnerà come puoi farlo.
Nei prossimi minuti imparerai:
- Come creare una nuova lista usando
for
loop, - La sintassi per l'utilizzo della comprensione degli elenchi in Python e
- Come modificare le comprensioni degli elenchi con l'istruzione condizionale
if
.
Inoltre, codificherai anche diversi esempi che ti aiuteranno a capire meglio la comprensione degli elenchi.
Immergiamoci.
Come creare elenchi Python usando for Loops
Supponiamo di avere un elenco di numeri nums
. E vorresti creare un altro elenco che contenga il cubo di tutti i numeri in nums
. Ecco come lo farai usando un ciclo for
in Python:
nums = [2,3,5,7] num_cubes = [] for num in nums: num_cubes.append(num**3) print(num_cubes) # Output [8, 27, 125, 343]
Nel codice sopra, abbiamo i seguenti passaggi:
- Inizializza una lista vuota
num_cubes
. -
nums
l'elenco dei numeri. - Accedi a ciascun numero
num
e calcola il relativo cubo utilizzando l'operatore di esponenziazione:num**3
. - Infine, aggiungi il valore al cubo all'elenco
num_cubes
Nota: in Python, l'operatore di esponenziazione
**
viene utilizzato con la sintassi:num**pow
—il numeronum
viene elevato a powerpow
.
Tuttavia, puoi farlo più facilmente usando la comprensione dell'elenco in Python. Procediamo ad imparare la sua sintassi.
Sintassi di comprensione dell'elenco Python
La sintassi generale per la comprensione degli elenchi è mostrata di seguito.
<new_list> = [<expression> for <item> in <iterable>]
Analizziamo la sintassi di cui sopra.
- In Python, gli elenchi sono delimitati da una coppia di parentesi quadre
[]
, quindi è necessario racchiudere l'istruzione di comprensione dell'elenco all'interno di[]
. -
<item>
in<iterable>
significa che stai scorrendo un iterable. Qualsiasi oggetto Python su cui puoi scorrere e accedere a singoli elementi, come elenchi, tuple e stringhe, è iterabile. -
<expression>
è l'output che desideri calcolare per ogni<item>
in<iterable>
.
E questo suona semplice, vero?
In sostanza, vorresti fare qualcosa per tutti gli elementi nell'elenco (o qualsiasi iterabile) per ottenere un nuovo elenco .
Usando questo, possiamo semplificare la sintassi, come mostrato nell'immagine qui sotto.

Ora che hai imparato la sintassi, è il momento di iniziare a programmare. Puoi utilizzare l'IDE Python online di Geekflare per seguire questi esempi. Oppure potresti eseguirli sul tuo computer locale.
Esempi di comprensione dell'elenco Python
Nella sezione precedente, hai creato un nuovo elenco num_cubes
da nums
. Iniziamo riscrivendolo usando la comprensione dell'elenco.
Utilizzo della comprensione delle liste con i numeri
Ora usiamo la sintassi semplificata come segue:
-
<do-this>
: Qui devi cubi ogninum
. Quindi sostituisci<do-this>
connum**3
. -
<all-items>
: la variabile di ciclo ènum
—i singoli numeri nell'elenco. -
<this-list>
: L'elenco esistente che abbiamo ènums
. - E
[num**3 for num in nums]
è l'espressione finale.
Mettendo tutto insieme, abbiamo il seguente frammento di codice:
num_cubes = [num**3 for num in nums] print(num_cubes) # Output [8, 27, 125, 343]
Congratulazioni, hai codificato la tua prima comprensione dell'elenco.
Andando avanti, lavoriamo con le stringhe Python.
Utilizzo della comprensione dell'elenco con le stringhe
Supponiamo di avere l'elenco degli authors
: puoi riscrivere l'elenco di seguito con i tuoi autori preferiti.
authors = ["jane austen","george orwell","james clear","cal newport"]
Nota come i nomi degli autori sono in minuscolo nell'elenco sopra. Ora vorremmo formattarli nel titolo e memorizzarli in un nuovo elenco chiamato author_list
.
Nota: in Python, il metodo della stringa title() accetta una stringa come argomento e restituisce una copia della stringa formattata nel caso del titolo. Cioè, la prima lettera di ogni parola è
First-name Last-name
Quindi ecco tutto quello che devi fare:
- scorrere l'elenco degli
authors
e per ogniauthor
nell'elenco, - chiama
author.title()
per ottenere una copia della stringa con maiuscolo del titolo.
E il codice Python per questo è mostrato di seguito:
authors = ["jane austen","george orwell","james clear","cal newport"] author_list = [author.title() for author in authors] print(author_list) # Output ['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']
Nell'output sopra, osserva come sono stati formattati i nomi di tutti gli autori nel titolo, che è quello che volevamo.

Utilizzo della comprensione degli elenchi con più elenchi
Finora, hai imparato come utilizzare la comprensione degli elenchi per creare nuovi elenchi da un elenco esistente. Ora impariamo come creare un nuovo elenco da più elenchi.
Ad esempio, considera questo problema: hai due elenchi l_arr
e b_arr
contenenti le lunghezze e le larghezze di 4 rettangoli.
E devi creare una nuova area
di elenco che includa l'area di questi 4 rettangoli. Ricorda, area = length * breadth
.
l_arr = [4,5,1,3] b_arr = [2,1,7,9]
Avrai bisogno di elementi di entrambi gli elenchi ( l_arr
e b_arr
) per calcolare l'area. E puoi farlo usando la funzione zip()
di Python.
Nota: in Python, la funzione
zip()
accetta uno o più iterable come argomenti con la sintassizip(*iterables)
. Quindi restituisce un iteratore di tuple, dove la tuplai
contiene l'elementoi
da ciascuno degli iterabili.
L'immagine seguente lo descrive in dettaglio. Hai 4 valori in l_arr
e b_arr
, quindi l'intervallo di indici va da 0 a 3. Come puoi vedere, la tupla 0
contiene l_arr[0]
e b_arr[0]
, la tupla 1
contiene l_arr[1]
e b_arr[1]
e così via.

Pertanto, puoi scorrere zip(l_arr,b_arr)
come mostrato di seguito:
area = [l*b for l,b in zip(l_arr,b_arr)] print(area) # Output [8,5,7,27]
Nella sezione successiva, imparerai come utilizzare le istruzioni condizionali all'interno di una comprensione di un elenco.
Comprensione dell'elenco Python con la sintassi delle condizioni
Iniziamo costruendo sulla sintassi precedente per la comprensione degli elenchi.
Ecco la sintassi:
<new_list> = [<expression> for <item> in <iterable> if <condition>]
Invece di calcolare l' <expression>
per tutti gli elementi, vorresti farlo solo per quegli elementi che soddisfano una specifica <condition>
—dove, condition := True
. E questo porta a una sintassi semplificata come mostrato:

Detto ciò, procediamo con esempi di codice.
Comprensione dell'elenco Python con esempi di condizioni
# 1. Ti viene assegnata la stringa "Sto imparando Python nel 2022" . Vorresti ottenere un elenco di tutte le cifre in questa stringa. Allora come lo fai?
In Python,
<char>.isdigit()
agisce su un carattere<char>
e restituisceTrue
se è una cifra (0-9); altrimenti restituisceFalse
.
Il frammento di codice seguente mostra come raccogliere l'elenco di tutte le cifre nella stringa str1
.
str1 = "I'm learning Python3 in 2022" digits = [char for char in str1 if char.isdigit()] print(digits) # Output ['3', '2', '0', '2', '2']
Nel codice sopra:
- si scorre la stringa
str1
, - accedere a ciascun
char
per verificare se è una cifra utilizzando il metodoisdigit()
e - aggiungi
char
alle nuovedigits
dell'elenco solo se è una cifra.
Facciamo un altro esempio.
#2. Hai una lista di frutti. E vorresti creare un elenco starts_with_b
che contenga tutti i fruits
dell'elenco dei frutti che iniziano con b
. È possibile utilizzare il metodo startswith()
per scrivere la condizione.
<str>.startswith('char')
restituisceTrue
se <str> inizia con 'char'; altrimenti restituisceFalse
.
fruits = ['blueberry','apple','banana','orange','cherry'] starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')] print(starts_with_b) # Output ['blueberry', 'banana']
Nell'output sopra, otteniamo 'blueberry'
e 'banana'
che sono i due frutti che iniziano con 'b'
nell'elenco dei fruits
, come previsto.
E questo conclude la nostra discussione sulla comprensione delle liste.
Conclusione
Spero che questo tutorial ti abbia aiutato a capire le comprensioni degli elenchi in Python.
Riassumiamo:
- Puoi usare [<do this> for <all-items> in <this-list>] per creare un nuovo elenco usando la comprensione dell'elenco.
- Inoltre, puoi usare la sintassi [<do this> for <all-items> in <this-list> if <condition-is-True>] con l'istruzione condizionale
if
.
Inoltre, hai anche codificato diversi esempi. Come passaggio successivo, puoi provare a riscrivere alcuni dei tuoi loop Python esistenti per la creazione di elenchi usando la comprensione degli elenchi. Buona codifica! Al prossimo tutorial.
Ora puoi vedere come convertire un elenco in un dizionario o imparare a gestire i file in Python.