Игнорировать элемент при создании списка в python

Мне нужно создать список из строки в python, используя синтаксис [f(char) for char in string], и я хотел бы иметь возможность игнорировать (не вставлять в список) значения f (x), которые равны None.

Как я могу это сделать?

Ответы

Ответ 1

Мы могли бы создать "подзапрос".

[r for r in (f(char) for char in string) if r is not None]

Если вы также игнорируете все значения False (0, False, None и т.д.), можно использовать filter:

filter(None, (f(char) for char in string) )
# or, using itertools.imap,
filter(None, imap(f, string))