【发布时间】:2011-04-23 10:45:04
【问题描述】:
我需要使用[f(char) for char in string] 语法从python 中的字符串构建一个列表,并且我希望能够忽略(不插入列表中)等于None 的f(x) 值.
我该怎么做?
【问题讨论】:
标签: python list syntactic-sugar
我需要使用[f(char) for char in string] 语法从python 中的字符串构建一个列表,并且我希望能够忽略(不插入列表中)等于None 的f(x) 值.
我该怎么做?
【问题讨论】:
标签: python list syntactic-sugar
我们可以创建一个“子查询”。
[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))
【讨论】:
[f(x) for x in l if f(x) is not None],不必要地执行了两次操作。