Как я могу асинхронно отобразить / отфильтровать асинхронную итерацию?

Допустим, у меня есть асинхронная итерация, которую я могу передать, используяasync forКак тогда я могу отобразить и отфильтровать его на новый асинхронный итератор? Следующий код, который является адаптацией того, как я делал бы то же самое с синхронной итерацией, не работает, так какyield не допускается внутриasync defs.

async def mapfilter(aiterable, p, func):
    async for payload in aiterable:
        if p(payload):

            # This part isn't allowed, but hopefully it should be clear
            # what I'm trying to accomplish.
            yield func(payload)

Ответы на вопрос(2)

Ваш ответ на вопрос