私のリスト
L = [0, 23, 234, 89, None, 0, 35, 9]
これを実行すると:
L = filter(None, L)
私はこの結果を得る
[23, 234, 89, 35, 9]
しかし、これは私が必要とするものではありません。本当に必要なのは:
[0, 23, 234, 89, 0, 35, 9]
私はデータのパーセンタイルを計算しているので、0 は大きな違いを生みます。
0 値を削除せずにリストから None 値を削除する方法は?
私のリスト
L = [0, 23, 234, 89, None, 0, 35, 9]
これを実行すると:
L = filter(None, L)
私はこの結果を得る
[23, 234, 89, 35, 9]
しかし、これは私が必要とするものではありません。本当に必要なのは:
[0, 23, 234, 89, 0, 35, 9]
私はデータのパーセンタイルを計算しているので、0 は大きな違いを生みます。
0 値を削除せずにリストから None 値を削除する方法は?
>>> L = [0, 23, 234, 89, None, 0, 35, 9]
>>> [x for x in L if x is not None]
[0, 23, 234, 89, 0, 35, 9]
filter楽しみのために、を使用せずにこれを行う方法を次に示しますlambda(このコードはお勧めしません-科学的な目的のためだけです)
>>> from operator import is_not
>>> from functools import partial
>>> L = [0, 23, 234, 89, None, 0, 35, 9]
>>> filter(partial(is_not, None), L)
[0, 23, 234, 89, 0, 35, 9]
リスト内包表記を使用すると、次のように実行できます。
l = [i for i in my_list if i is not None]
l の値は次のとおりです。
[0, 23, 234, 89, 0, 35, 9]
from operator import is_not
from functools import partial
filter_null = partial(filter, partial(is_not, None))
# A test case
L = [1, None, 2, None, 3]
L = list(filter_null(L))