这是我一开始的资料。
我的清单
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值?
这是我一开始的资料。
我的清单
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值?
当前回答
如果列表中有NoneType和pandas._lib .missing. list。NAType对象比使用:
[i for i in lst if pd.notnull(i)]
其他回答
>>> 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]
只是为了好玩,这里介绍了如何在不使用lambda的情况下调整过滤器来实现这一点,(我不建议使用此代码-仅用于科学目的)
>>> from operator import is_not
>>> from functools import partial
>>> L = [0, 23, 234, 89, None, 0, 35, 9]
>>> list(filter(partial(is_not, None), L))
[0, 23, 234, 89, 0, 35, 9]
列表理解可能是最干净的方式:
>>> 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]
还有一种函数式编程方法,但它更复杂:
>>> from operator import is_not
>>> from functools import partial
>>> L = [0, 23, 234, 89, None, 0, 35, 9]
>>> list(filter(partial(is_not, None), L))
[0, 23, 234, 89, 0, 35, 9]
如果列表中有NoneType和pandas._lib .missing. list。NAType对象比使用:
[i for i in lst if pd.notnull(i)]
@jamylak的回答非常好,但是如果你不想导入几个模块来完成这个简单的任务,就在原地写你自己的lambda:
>>> L = [0, 23, 234, 89, None, 0, 35, 9]
>>> filter(lambda v: v is not None, L)
[0, 23, 234, 89, 0, 35, 9]
如果这都是列表的列表,你可以修改sir @Raymond的答案
L = [[None], [123], [None], [151]] no_none_val = list(filter(无。__ne__, [x[0] for x in L])) 然而对于python2
no_none_val = [x[0] for x in L if x[0] not None] """ Both returns [123, 151]""" "
如果变量不是List中的变量,<< list_index[0]无>>