Tengo una lista de valores que necesito filtrar dados los valores en una lista de booleanos:
list_a = [1, 2, 4, 6] filter = [True, False , Verdadero, Falso]
Generar una nueva lista filtrada con la siguiente línea:
filtered_list = [i for indx,i in enumerate(list_a) if filter[indx] == True]
lo que da como resultado:
print filtered_list [1,4]
La línea funciona pero me parece un poco exagerada y me preguntaba si había una forma más sencilla de lograr lo mismo.
Consejos
Resumen de dos buenos consejos dados en las respuestas a continuación:
1- No nombre una lista filter
como lo hice yo porque es una función integrada.
2- No compares las cosas con True
como hice con if filter[idx]==True..
ya que no es necesario. Solo usa if filter [idx]
es suficiente.