Python - Comprensione dell'elenco
Comprensione dell'elenco
La comprensione dell'elenco offre una sintassi più breve quando si desidera creare un nuovo elenco basato sui valori di un elenco esistente.
Esempio:
Sulla base di un elenco di frutti, desideri un nuovo elenco, contenente solo i frutti con la lettera "a" nel nome.
Senza la comprensione dell'elenco dovrai scrivere una for
dichiarazione con un test condizionale all'interno:
Esempio
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
Con la comprensione dell'elenco puoi fare tutto ciò con una sola riga di codice:
Esempio
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x
for x in fruits if "a" in x]
print(newlist)
La sintassi
newlist = [expression for item in iterable if condition == True]
Il valore restituito è un nuovo elenco, lasciando invariato il vecchio elenco.
Condizione
La condizione è come un filtro che accetta solo gli elementi con valore
True
.
Esempio
Accetta solo articoli che non sono "mela":
newlist = [x for x in fruits if x != "apple"]
La condizione
if x != "apple"
ritornerà True
per tutti gli elementi diversi da "mela", facendo in modo che il nuovo elenco contenga tutti i frutti tranne "mela".
La condizione è facoltativa e può essere omessa:
Esempio
Senza if
dichiarazione:
newlist = [x for x in fruits]
Iterabile
L' iterabile può essere qualsiasi oggetto iterabile, come una lista, una tupla, un set ecc.
Esempio
Puoi usare la range()
funzione per creare un iterabile:
newlist = [x for x in range(10)]
Stesso esempio, ma con una condizione:
Esempio
Accetta solo numeri inferiori a 5:
newlist = [x for x in range(10) if x < 5]
Espressione
L' espressione è l'elemento corrente nell'iterazione, ma è anche il risultato, che puoi manipolare prima che finisca come un elemento di elenco nel nuovo elenco:
Esempio
Imposta i valori nel nuovo elenco in maiuscolo:
newlist = [x.upper()
for x in fruits]
Puoi impostare il risultato come preferisci:
Esempio
Imposta tutti i valori nel nuovo elenco su "ciao":
newlist = ['hello' for x in fruits]
L' espressione può anche contenere condizioni, non come un filtro, ma come un modo per manipolare il risultato:
Esempio
Restituisci "arancione" invece di "banana":
newlist = [x if x != "banana" else "orange"
for x in fruits]
L' espressione nell'esempio sopra dice:
"Restituisci l'articolo se non è banana, se è banana restituisci arancione".