我需要使用Python中的
[f(char) for char in string]
语法从字符串构建列表,并且我希望能够忽略(不将其插入到列表中)等于None
的f(x)值。如何实现?[f(char) for char in string]
语法从字符串构建列表,并且我希望能够忽略(不将其插入到列表中)等于None
的f(x)值。如何实现?[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))
你可以在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]
[f(x) for x in l if f(x) is not None]
,这样会不必要地执行两次操作。 - Luke Davis