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 donne :
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 le même résultat.
Conseils
Résumé de deux bons conseils donnés dans les réponses ci-dessous :
1- Ne nommez pas une liste filtre
comme je l'ai fait car c'est une fonction intégrée.
2- Ne comparez pas les choses à True
comme je l'ai fait avec if filter[idx]==True..
car c'est inutile. Utilisez simplement if filter [idx]
suffit.