J'ai une liste de valeurs que je dois filtrer en fonction des valeurs d'une liste de booléens :
list_a = [1, 2, 4, 6]
filter = [True, False, True, False]
Je génère une nouvelle liste filtrée avec la ligne suivante :
filtered_list = [i for indx,i in enumerate(list_a) if filter[indx] == True]
ce qui entraîne :
print filtered_list
[1,4]
La ligne fonctionne mais semble (pour moi) un peu exagérée et je me demandais s'il y avait un moyen plus simple d'obtenir la même chose.
Conseils
Résumé de deux bons conseils donnés dans les réponses ci-dessous :
1- Ne pas nommer une liste filter
comme je l'ai fait parce que c'est une fonction intégrée.
2- Ne comparez pas les choses à True
comme je l'ai fait avec if filter[idx]==True..
puisque c'est inutile. Il suffit d'utiliser if filter[idx]
est suffisant.