在构建Python列表时忽略某个元素
我想在Python中从一个字符串创建一个列表,使用的语法是[f(char) for char in string]
。我希望能够忽略那些f(x)
的值等于None
的情况,也就是说不把这些值放进列表里。
我该怎么做呢?
2 个回答
0
你可以在for循环中加一个条件,检查每个元素是不是None或者空的。
[element for element in list_of_elements) if element]
这样可以避免重复循环。
举个例子:从一个列表中去掉偶数:
f = lambda x: x % 2
list_of_elements = [1, 2, 3, 4, 5, 7, 34, 45, 55, 65, 66]
c = [element for element in list_of_elements if f(element)]
输出结果:
[1, 3, 5, 7, 45, 55, 65]
40
我们可以创建一个“子查询”。
[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))