2017-12-18 1 views
0

を使用して、指定された文字列からスペースを削除する必要がある私は、次のコードは、という印象の下にあったフィルタ

"StackOverflow" 

しかし、私はPythonを使用した場合、それは実現しませんでした(2.7)。それがそうである理由誰も教えてもらえますか?

+0

。だから、 '' '.join(フィルタ...' –

+0

参照[ドキュメント](https://docs.python.org/2/library/functions.html#filter) '関数がNoneの場合、IDを使用する必要がありますあなたが戻っAA発電機を得るのCoSしかし、これが2.7タグ付けされていますが、価値がある - 。。機能は –

答えて

2

助けfilterのための州

リターン機能(アイテム)のための一連のそれらの項目はtrueです。 機能がNoneの場合、該当する項目を返します。

スペースのブール値はTrueです。したがって、削除されません。

5

あなたはしかし、スペースがとても明示的にスペースをチェックする(ためNone検索)、Falseではない、スペースをフィルタリングするために表示されます。さらに

filter(lambda x: x!=' ',"Stack Overflow") 

、あなただけ扱っている場合文字列で、replaceを忘れないでください:

"Stack Overflow".replace(' ', '') 
+0

removed.'ある、つまり、想定されます指摘 –

+0

右間違っているのiterableの全ての要素は、さらに、フィルタの必要性は今のpython 3にあまり面白い参加 – doctorlove

2

あなたは「'置き換える関数を定義する必要があります。

filter(lambda x: x != ' ', 'Stack Overflow') 

filterのマニュアルを参照してください。何の機能が指定されていない場合

それだけの要素が「」だけでなく、他の文字のためのためのケースであるtruthyであるかどうかを比較します。より良い理解のためにNoneがfalsy値であるため、リストから削除される場合、この例を参照してください。ジェネレータオブジェクトを返すfilter`パイソン3 `に

filter(None, ['S', 't', 'a', 'c', 'k', None, 'O', 'v', 'e', 'r', 'f', 'l', 'o', 'w'])