Tenho uma lista de valores que preciso filtrar dados os valores em uma lista de booleanos:
list_a = [1, 2, 4, 6] filter = [True, False , True, False]
Geito uma nova lista filtrada com a seguinte linha:
filtered_list = [i for indx,i in enumerate(list_a) if filter[indx] == True]
o que resulta em:
imprimir lista_filtrada [1,4]
A linha funciona, mas parece (para mim) um pouco exagerada e eu queria saber se havia uma maneira mais simples de conseguir o mesmo.
Conselhos
Resumo de dois bons conselhos dados nas respostas abaixo:
1- Não nomeie uma lista filtro
como eu fiz porque é uma função interna.
2- Não compare as coisas com True
como eu fiz com if filter[idx]==True..
já que é desnecessário. Apenas usando if filter [idx]
é suficiente.