Понимание списка позволяет фильтровать , а затем карту.Вы хотите вручную map
сначала выполнить свою функцию.
gen = (x for x in map(function, generator(*args)) if x)
Выше приведено для generator
, которая выдает одиночные аргументы.Вы можете использовать itertools.starmap
, если он возвращает tuple
аргументов.
from itertools import starmap
gen = (x for x in starmap(function, generator(*args)) if x)
Наконец, если вам также необходимо передать аргументы ключевого слова, вам нужно будет полагаться наlambda
function.
gen = (x for x in map(lambda args: function(*args, **kwargs), generator(*g_args)) if x)
Хотя, обратите внимание, что в этот момент генератор стиля функции может быть более читабельным.
def gen(*x):
for args in generator(*x):
x = some_function(*args, **kwargs)
if x:
yield x