Вот альтернатива некоторым другим версиям фильтра:
from operator import attrgetter as attr
for airport in filter(attr('is_important'), airports):
...
Преимущества этого подхода в том, что он довольно лаконичен, а также позволяет использовать точечную нотацию attr ('first_class.is_full').
Вы также можете поместить что-то подобное (или версию, использующую понимание списка) в служебную функцию, такую как filter_by_attr. Тогда вы могли бы сделать:
for airport in filter_by_attr(airports, 'is_important'):
...
Я по-прежнему считаю, что e-satuns правильно помещать ее в новую переменную, независимо от того, какой метод вы используете. Это становится более понятным, особенно если использование не совсем соответствует названию рассматриваемого атрибута (или критерии более сложные).
Мое единственное замечание по этому поводу заключается в том, что если вы обнаружите, что используете это в нескольких местах, возможно, вам следует сделать аэропорты специальной коллекцией, в которой «Important_airports» является @property, который возвращает отфильтрованную коллекцию. Или какая-то другая абстракция, чтобы скрыть фильтрацию (например, вызов службы).