Ho un elenco di valori che devo filtrare dati i valori in un elenco di booleani:
list_a = [1, 2, 4, 6] filter = [True, False , True, False]
Genero una nuova lista filtrata con la seguente riga:
filtered_list = [i for indx,i in enumerate(list_a) if filter[indx] == True]
che risulta in:
print filtered_list [1,4]
La linea funziona ma sembra (a me) un po' eccessiva e mi chiedevo se esistesse un modo più semplice per ottenere lo stesso risultato.
Consigli
Riepilogo di due buoni consigli forniti nelle risposte seguenti:
1- Non nominare un elenco filtro
come ho fatto io perché è una funzione incorporata.
2- Non confrontare le cose con True
come ho fatto con if filter[idx]==True..
poiché non è necessario. Basta usare if filter [idx]
è sufficiente.