Comprensione dell'elenco in Python - Con esempi

Pubblicato: 2022-02-18

In 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 numero num viene elevato a power pow .

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.

lista-comprensione-sintassi
Sintassi di comprensione dell'elenco Python (immagine dell'autore)

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 ogni num . Quindi sostituisci <do-this> con num**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 ogni author 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 sintassi zip(*iterables) . Quindi restituisce un iteratore di tuple, dove la tupla i contiene l'elemento i 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.

python-zip-funzione
Python zip() Funzione (immagine dell'autore)

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:

lista-comprensione-con-sintassi-condizione
Comprensione dell'elenco Python con la sintassi delle condizioni (immagine dell'autore)

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 restituisce True se è una cifra (0-9); altrimenti restituisce False .

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 metodo isdigit() e
  • aggiungi char alle nuove digits 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') restituisce True se <str> inizia con 'char'; altrimenti restituisce False .

 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.