2024-04-25 21:11:16 发布
网友
This was my source I started with.
我的列表
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值的情况下从列表中删除“无”值?
FWIW,Python 3简化了这个问题:
>>> L = [0, 23, 234, 89, None, 0, 35, 9] >>> list(filter(None.__ne__, L)) [0, 23, 234, 89, 0, 35, 9]
在Python 2中,您可以使用列表理解来代替:
>>> [x for x in L if x is not None] [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]
只是为了好玩,下面介绍如何在不使用lambda的情况下调整filter来完成此任务(我不推荐使用此代码-它只是为了科学目的)
lambda
filter
>>> 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]
对于Python2.7(参见Raymond的答案,对于Python3等价物):
想知道在python(和其他OO语言)中,“不是没有”是否很常见,以至于在common.py(我用“from common import*”导入到每个模块)中,我包括以下几行:
def exists(it): return (it is not None)
然后要从列表中删除任何元素,只需执行以下操作:
filter(exists, L)
我发现这比相应的列表理解(Raymond将其显示为Python2版本)更容易阅读。
FWIW,Python 3简化了这个问题:
在Python 2中,您可以使用列表理解来代替:
只是为了好玩,下面介绍如何在不使用
lambda
的情况下调整filter
来完成此任务(我不推荐使用此代码-它只是为了科学目的)对于Python2.7(参见Raymond的答案,对于Python3等价物):
想知道在python(和其他OO语言)中,“不是没有”是否很常见,以至于在common.py(我用“from common import*”导入到每个模块)中,我包括以下几行:
然后要从列表中删除任何元素,只需执行以下操作:
我发现这比相应的列表理解(Raymond将其显示为Python2版本)更容易阅读。
相关问题 更多 >
编程相关推荐