Мы могли бы создать «подзапрос».
[r for r in (f(char) for char in string) if r is not None]
Если вы разрешите игнорировать также все ложные значения (0, False, None и т. Д.), Можно использовать filter
:
filter(None, (f(char) for char in string) )
# or, using itertools.imap,
filter(None, imap(f, string))