从列表中删除 None 值而不删除 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 值的情况下从列表中删除 None 值?

原文由 mongotop 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 781
2 个回答
>>> 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 的情况下调整 filter 来做到这一点,(我不推荐这个代码 - 它只是为了科学目的)

 >>> 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]

原文由 jamylak 发布,翻译遵循 CC BY-SA 4.0 许可协议

列表理解 可能是最干净的方式:

 >>> 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]

原文由 Raymond Hettinger 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题