Introduzione alla comprensione dell'elenco Python

La comprensione di Python List è un altro modo di creare elenchi usando un'operazione di iterazione. Funziona allo stesso modo di un ciclo, ma LC viene utilizzato specificamente per restituire elenchi. Le comprensioni dell'elenco hanno espressioni tra parentesi come la creazione di un elenco normale, l'espressione verrà eseguita per tutti gli elementi.

La comprensione degli elenchi è molto utile nella scienza dei dati, in cui si leggono gli elenchi / si filtrano i nomi delle colonne / si rimuovono gli elementi dagli elenchi, ecc. Sebbene sia possibile utilizzare loop e funzioni lambda per eseguire alcune azioni, la comprensione degli elenchi fornisce un modo elegante e semplice per rappresentare lo stesso.
Le comprensioni dell'elenco possono essere utilizzate per sostituire i metodi map (), reduce () e filter ().
La comprensione dell'elenco è come la teoria degli insiemi delle scuole superiori.

Esempio:

( x: x is a natural number greater than 15 )
( x: x is a vowel in word 'Data Science', x is a vowel )

Creiamo la comprensione dell'elenco per le due affermazioni precedenti.

(x for x in range(0, 20) if x>15) (x for x in 'Data Science' if x in ('a', 'e', 'i', 'o', 'u'))

Produzione:

(16, 17, 18, 19) ('a', 'a', 'i', 'e', ​​'e')

Le comprensioni dell'elenco sono facili da capire e da attuare. Fondamentalmente questi sono creati su tabelle. Ci sono tre cose da considerare durante la scrittura della sintassi per la comprensione delle liste.

  1. Parametro per output
  2. L'iterabile
  3. condizioni

La sintassi può avere due delle precedenti o 3 delle precedenti come sintassi per la comprensione dell'elenco.

Sintassi:

(output parameter | The Iterable)
(output Parameter | The Iterable | Condition )

Esempi di comprensione dell'elenco Python

Qui discuteremo come usare la comprensione dell'elenco usando Python. Vedremo gli esempi in un modo diverso in quanto lo eseguiremo usando per il ciclo e quindi creeremo lo stesso usando la comprensione dell'elenco.

Esempio n. 1: trovare i quadrati perfetti

Ecco alcuni esempi di quadrati perfetti con condizioni diverse indicati di seguito:

1. Con per Loop

for i in range(1, 30):
if int(i**0.5)==i**0.5:
print(i)

2. Utilizzo di Comprensioni elenco

(x for x in range(1, 30) if int(x**0.5)==x**0.5)

Produzione:

Esempio n. 2: ottenere solo consonanti da una frase

Qui prenderemo una frase arbitraria e cercheremo di ottenere consonanti nella frase come output.

1. Utilizzo di For Loop

def consonants_for(sentence):
vowels = 'aeiou'
consonants = () for x in sentence:
if x not in vowels:
consonants.append(x)
return ''.join(consonants)
sentence = 'we are studying list comprehensions'
print("With For Loop : " + consonants_for(sentence))

Produzione:

Con For Loop: wr stdyng lst cmprhnsns

2. Utilizzo di Comprensione elenco

def consonants_lc(sentence):
vowels = 'aeiou'
return ''.join(( x for x in sentence if x not in vowels))
sentence = 'we are studying list comprehensions'
print("Using List Compr: " + consonants_lc(sentence))

Produzione:

Utilizzo dell'elenco Compr: wr stdyng lst cmprhnsns

Esempio n. 3: creazione di un dizionario da due, a differenza degli elenchi

Ecco alcuni esempi di dizionario con diverse condizioni di seguito:

1. Utilizzo di For Loop

def dict_for(keys, values):
dictionary = ()
for i in range(len(keys)):
dictionary(keys(i)) = values(i) return dictionary
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("FOR-loop result: " + str(dict_for(Movie, Actor)))

Produzione:

Risultato FOR-loop: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')

2. Utilizzo di Comprensione elenco

def dict_lc(keys, values):
return ( keys(i) : values(i) for i in range(len(keys)) )
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("LC result : " + str(dict_lc(Movie, Actor)))

Produzione:

Risultato LC: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')

Vantaggi della comprensione dell'elenco Python

La comprensione dell'elenco svolge lo stesso compito, ma in modo diverso!

La comprensione dell'elenco presenta molti vantaggi rispetto al ciclo e ad altri metodi. Alcuni dei vantaggi sono i seguenti:

  1. Le comprensioni dell'elenco sono facili da capire e rendono elegante il codice. Possiamo scrivere il programma con espressioni semplici.
  2. La comprensione degli elenchi è molto più rapida rispetto a quella di loop e altri metodi come una mappa. (Lo stesso è spiegato nell'esempio seguente:

Prenderemo l'esempio 1 come riferimento e calcoleremo il tempo impiegato da diversi metodi per eseguire la stessa funzione. In primo luogo, vedremo il tempo impiegato da "for loop" e poi il tempo sarà preso dal metodo map () e alla fine vedremo il tempo impiegato dalle comprensioni dell'elenco.

Una tabella mostra il tempo impiegato dalle diverse tecniche.

1. Per Loop

Esempio di utilizzo per il ciclo riportato di seguito:

Codice:

def perf_square(x):
output = () for i in x:
if int(i**0.5)==i**0.5:
output.append(i)
return output
%timeit perf_square(range(1, 30))

2. Metodo della mappa

Esempio utilizzando il metodo della mappa riportato di seguito:

Codice:

def perf_square_map(x):
return map(lambda i: i**0.5==i**0.5, x)
%timeit perf_square_map(range(1, 30))

3. Elenco comprensioni

Esempio utilizzando la comprensione dell'elenco fornita di seguito:

Codice:

def perf_square_lc(x):
return (i**0.5 == i**0.5 for i in x) %timeit perf_square_lc(range(1, 30))

Produzione:

MetodoTempo
Per loop787 ns
Metodo Map ()518 ns
Comprensioni elenco276 ns

Chiaramente il tempo di esecuzione della comprensione dell'elenco è 2, 85 volte più veloce rispetto al ciclo e 1, 87 volte più veloce del metodo della mappa. La comprensione dell'elenco lascia indietro altri metodi con un grande margine. Potrebbero esserci delle speculazioni, quindi perché non usare la LC in tutti i posti e non i loop? LC è più veloce nella maggior parte dei casi e può sostituire i loop in quasi l'80% dei casi. Ma non possiamo sostituire i loop, in alcuni casi abbiamo un buon numero di condizioni e le classi sono nidificate in un loop. In questi casi, l'uso di LC potrebbe essere piuttosto ingombrante e non fattibile. È meglio fare loop in tali situazioni. Sebbene si possa usare la comprensione dell'elenco in per i loop in sostituzione di altri per i loop. Ridurrà i tempi di esecuzione e manterrà la facilità d'uso del codice.

  • Possiamo nidificare più condizioni in una comprensione di elenco.
  • LC può eseguire manipolazioni di variabili multiple.
  • Non è necessario fornire un comando separato per ottenere l'output.
  • La comprensione dell'elenco riduce la complessità del codice.
  • Le comprensioni dell'elenco sono efficienti.

Conclusione

Le comprensioni degli elenchi vengono utilizzate per creare elenchi dal processo iterativo. La comprensione dell'elenco è facile da comprendere / implementare e rende il codice elegante. La comprensione dell'elenco è compatta e intuitiva.

Abbiamo discusso della sintassi per la comprensione dell'elenco insieme ad alcuni buoni esempi perspicaci. Alla fine, abbiamo scritto un programma per ottenere i tempi da ciascun metodo. Abbiamo concluso che LC è 2, 85 volte più veloce rispetto a loop e 1, 87 volte più veloce del metodo map ().

Articoli consigliati

Questa è una guida alla comprensione dell'elenco Python. Qui discutiamo i vantaggi della comprensione dell'elenco python insieme alla sintassi e agli esempi con condizioni diverse. Puoi anche consultare i seguenti articoli per saperne di più-

  1. Costruttore in Java
  2. Ordinamento in Java
  3. Costruttore in Java
  4. JCheckBox in Java
  5. Guida all'ordinamento in C # con esempi
  6. Funzione di ordinamento in Python con esempi
  7. Loop in VBScript con esempi
  8. Esempi per implementare la casella di controllo in Bootstrap

Categoria: