我的印象是,下面的代碼從一個給定的字符串中的空格:需要使用過濾器
filter(None,"Stack Overflow")
將返回:
"StackOverflow"
但是,當我使用Python中沒有發生(2.7)。有誰能告訴我爲什麼是這樣嗎?
我的印象是,下面的代碼從一個給定的字符串中的空格:需要使用過濾器
filter(None,"Stack Overflow")
將返回:
"StackOverflow"
但是,當我使用Python中沒有發生(2.7)。有誰能告訴我爲什麼是這樣嗎?
的幫助filter
狀態
返回序列哪個函數(項目)的項目是真實的。如果 函數爲None,則返回true的項目。
空格的布爾值是True
因此它不會被刪除。
你似乎想篩選出的空間,但空間並不False
(其中None
搜索),因此明確地檢查一個空間:
filter(lambda x: x!=' ',"Stack Overflow")
此外,如果你只處理用繩子,不要忘記replace
:
"Stack Overflow".replace(' ', '')
此外,過濾器需要加入python 3.現在不太有趣 –
Right - cos你得到一個生成器,但是它被標記爲2.7,但值得指出 – doctorlove
您需要定義一個函數,用於替換'「:
filter(lambda x: x != ' ', 'Stack Overflow')
請參閱filter的文檔。
當沒有指定函數時,它只是比較元素是否爲「真」,以及其他任何字符。爲了更好地理解此示例,其中None
是falsy值,因此被從列表中移除:有關python 3,`filter`返回一個生成對象
filter(None, ['S', 't', 'a', 'c', 'k', None, 'O', 'v', 'e', 'r', 'f', 'l', 'o', 'w'])
。所以你必須使用'''.join(過濾器......' –
參見[docs](https://docs.python.org/2/library/functions.html#filter)'如果函數是None,則標識函數是假設的,也就是說,所有可迭代的元素都被刪除了。 –