
In Python, puoi generare un nuovo elenco estraendo, rimuovendo, sostituendo o convertendo gli elementi che soddisfano le condizioni di un elenco esistente con la comprensione degli elenchi.
In questo articolo vengono descritti i seguenti contenuti.
- Nozioni di base sulla comprensione delle liste
- Applica l’operazione a tutti gli elementi dell’elenco
- Estrarre/rimuovere dall’elenco gli elementi che soddisfano le condizioni
- Presenta/convertire gli elementi che soddisfano le condizioni nell’elenco
Vedere l’articolo seguente per esempi di elenchi di stringhe.
È anche possibile campionare casualmente elementi da un elenco.
Prendi il seguente elenco come esempio.
l = list(range(-5, 6))
print(l)
# [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]
Nozioni di base sulla comprensione delle liste
In Python, puoi creare un elenco usando la comprensione degli elenchi. È più semplice che usare il ciclo per.
[expression for variable_name in iterable if condition]
l’espressione viene applicata agli elementi che soddisfano la condizione di iterabile (elenco, tupla, ecc.) e viene generato un nuovo elenco. se la condizione può essere omessa, se omessa, l’espressione viene applicata a tutti gli elementi.
Vedere il seguente articolo per i dettagli sulla comprensione degli elenchi.
Applica l’operazione a tutti gli elementi dell’elenco
Se si scrive l’operazione nella desiderata parte dell’espressione di comprensioni elenco, tale operazione viene applicata a tutti gli elementi dell’elenco.
l_square = [i**2 for i in l]
print(l_square)
# [25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25]
l_str = [str(i) for i in l]
print(l_str)
# ['-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4', '5']
Puoi usare per un elenco di numeri in un elenco di stringhe. Vedere il seguente articolo per i dettagli.
Se vuoi solo selezionare gli elementi in base alla condizione, non è necessario elaborarli con l’espressione, quindi puoi scriverlo come segue.
[variable_name for variable_name in original_list if condition]
Vengono estratti solo gli elementi che soddisfano le condizioni (elementi che restituiscono True per condizione) e viene generato un nuovo elenco.
l_even = [i for i in l if i % 2 == 0]
print(l_even)
# [-4, -2, 0, 2, 4]
l_minus = [i for i in l if i < 0]
print(l_minus)
# [-5, -4, -3, -2, -1]
Se la condizione viene modificata in condizione se non, vengono estratti solo gli elementi che non soddisfano la condizione (elementi che restituiscono False per condizione). Ciò equivale a rimuovere gli elementi che soddisfano la condizione.
l_odd = [i for i in l if not i % 2 == 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]
l_plus = [i for i in l if not i < 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]
Naturalmente è possibile specificare una condizione corrispondente senza utilizzare not.
l_odd = [i for i in l if i % 2 != 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]
l_plus = [i for i in l if i >= 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]
Puoi anche collegare più condizioni con oo e. È possibile utilizzare anche la negazione non.
l_minus_or_even = [i for i in l if (i < 0) or (i % 2 == 0)]
print(l_minus_or_even)
# [-5, -4, -3, -2, -1, 0, 2, 4]
l_minus_and_odd = [i for i in l if (i < 0) and not (i % 2 == 0)]
print(l_minus_and_odd)
# [-5, -3, -1]
Presenta/convertire gli elementi che soddisfano le condizioni nell’elenco
Se si desidera o devono utilizzare elementi senza la condizione che soddisfano gli elementi che soddisfano la condizione, le condizioni da utilizzare nella parte delle espressioni delle condizioni dell’elenco.
In Python, le espressioni condizionali possono essere scritte come segue:
X è il valore o l’espressione per True e Y è il valore o l’espressione per False.
a = 80
x = 100 if a > 50 else 0
print(x)
# 100
b = 30
y = 100 if b > 50 else 0
print(y)
# 0
Utilizzare le comprensioni degli elenchi e le espressioni condizionali:
[X if condition else Y for variable_name in original_list]
La parte racchiusa tra parentesi è espressioni condizionali. Non sono necessarie parentesi nel codice effettivo.
[(X if condition else Y for variable_name) in original_list]
Se scrivi nome_variabile in X o Y, il valore dell’elemento originale viene utilizzato così com’è espressione e se scrivi un’espressione, quell’ viene applicata.
l_replace = [100 if i > 0 else i for i in l]
print(l_replace)
# [-5, -4, -3, -2, -1, 0, 100, 100, 100, 100, 100]
l_replace2 = [100 if i > 0 else 0 for i in l]
print(l_replace2)
# [0, 0, 0, 0, 0, 0, 100, 100, 100, 100, 100]
l_convert = [i * 10 if i % 2 == 0 else i for i in l]
print(l_convert)
# [-5, -40, -3, -20, -1, 0, 1, 20, 3, 40, 5]
l_convert2 = [i * 10 if i % 2 == 0 else i / 10 for i in l]
print(l_convert2)
# [-0.5, -40, -0.3, -20, -0.1, 0, 0.1, 20, 0.3, 40, 0.5]