У меня есть список значений, которые мне нужно фильтровать, учитывая значения в списке логических элементов:
list_a = [1, 2, 4, 6]
filter = [True, False, True, False]
Я создаю новый отфильтрованный список со следующей строкой:
filtered_list = [i for indx,i in enumerate(list_a) if filter[indx] == True]
что приводит к:
print filtered_list
[1,4]
Линия работает, но выглядит (мне) немного излишней, и мне было интересно, есть ли более простой способ добиться того же.
Советы
Резюме двух хороших советов, приведенных в ответах ниже:
1- Не называйте список filter
, как я, потому что это встроенная функция.
2- Не сравнивайте вещи с True
, как я делал с if filter[idx]==True..
, поскольку это не нужно. Просто использовать if filter[idx]
достаточно.