最初の引数がNone
の場合、filter
はブール値のコンテキストでFalse
に評価されるすべての要素を自動的に削除します。私はほとんどのニシキヘビのアプローチと考えているでしょう:Pythonのドキュメントから
>>> filter(None, [1, 3, 0, 5, 3])
[1, 3, 5, 3]
抜粋:
は、関数がtrueを返すのiterableのこれらの要素からリストを構築します。 iterableは、シーケンス、反復をサポートするコンテナ、またはイテレータのいずれかです。 iterableが文字列またはタプルの場合、結果もその型を持ちます。それ以外の場合は常にリストになります。 functionがNoneの場合、アイデンティティ関数が仮定されます。つまり、falseであるiterableのすべての要素が削除されます。
代替オプションは、それらを使用することの利点は、彼らは関係なく、あなたは、Python 3にiterator
を返しfilter
とは異なり、使用しているPythonのバージョンと同じように動作しないことになりますのPython 3でPython 2上のリストの内包とジェネレータ式になりリストの代わりに
>>> l = [1, 3, 0, 5, 3]
>>> [x for x in l if x]
[1, 3, 5, 3]
>>> list(x for x in l if x)
[1, 3, 5, 3]
これはちょうど私が探していたものです。ありがとう –