Filtrowanie listy na podstawie listy wartości logicznych

| | | | | | | | | |

Mam listę wartości, które muszę filtrować, biorąc pod uwagę wartości z listy wartości logicznych:

list_a = [1, 2, 4, 6] filter = [True, False , True, False] 

Generuję nową filtrowaną listę z następującym wierszem:

filtered_list = [i for indx,i in enumerate(list_a) if filter[indx] == True] 

co powoduje:

print filter_list [1,4] 

Linia działa, ale wygląda (dla mnie) trochę przesadnie i zastanawiałem się, czy istnieje prostszy sposób na osiągnięcie tego samego.


Porady

Podsumowanie dwóch dobre rady podane w poniższych odpowiedziach:

1- Nie nazywaj listy filtrem tak jak ja, ponieważ jest to funkcja wbudowana.

2- Nie porównuj rzeczy z True, tak jak zrobiłem to z if filter[idx]==True.., ponieważ nie jest to konieczne. Po prostu użyj if filter [idx] wystarczy.