我的印象是以下代码:
filter(None,"Stack Overflow")
将返回:
"StackOverflow"
但是当我使用Python(2.7)时没有发生这种情况。有人可以告诉我为什么会这样吗?
答案 0 :(得分:5)
您似乎想要过滤掉空格,但空格不是False
(None
搜索的空间),因此请明确检查空格:
filter(lambda x: x!=' ',"Stack Overflow")
此外,如果您只处理字符串,请不要忘记replace
:
"Stack Overflow".replace(' ', '')
答案 1 :(得分:2)
filter
州的帮助
返回函数(item)为true的序列项。如果 function为None,返回真实的项目。
空格的布尔值为True
,因此不会将其删除。
答案 2 :(得分:2)
您需要定义一个替换'':
的函数filter(lambda x: x != ' ', 'Stack Overflow')
请参阅filter的文档。
当没有指定任何函数时,它只是比较元素是否是真实的,这是''以及任何其他字符的情况。为了更好地理解,请参阅此示例,其中None
是一个假值,因此从列表中删除:
filter(None, ['S', 't', 'a', 'c', 'k', None, 'O', 'v', 'e', 'r', 'f', 'l', 'o', 'w'])