296

これは私が始めた私のソースでした。

私のリスト

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 値を削除する方法は?

4

11 に答える 11

439
>>> 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]
于 2013-04-19T03:33:06.840 に答える
22

リスト内包表記を使用すると、次のように実行できます。

l = [i for i in my_list if i is not None]

l の値は次のとおりです。

[0, 23, 234, 89, 0, 35, 9]
于 2013-04-19T03:34:38.307 に答える
3
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))
于 2016-11-01T23:43:41.623 に答える