在构建Python列表时忽略某个元素

21 投票
2 回答
14474 浏览
提问于 2025-04-16 05:16

我想在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))

撰写回答