Python 查找带删除的快速筛选器()

Python 查找带删除的快速筛选器(),python,performance,optimization,numpy,Python,Performance,Optimization,Numpy,我正在尝试编写一个相当快速的快速排序,但这在许多其他应用程序中都有使用 内置过滤器(function,iterable)函数返回iterable中的项目列表,当传递给函数时返回true,并且当您只需要检查一个列表的一个条件时,比传统的for循环快得多 我要寻找的是一个非常快速的函数(比如filter),它不仅可以构建一个新的列表,还可以从旧列表中删除它所需要的项。在单透视快速排序的应用中,这将允许删除一个filter语句,并可能使分区例程的速度提高近2倍 python中内置了这样的函数吗?努比呢

我正在尝试编写一个相当快速的快速排序,但这在许多其他应用程序中都有使用

内置过滤器(function,iterable)函数返回iterable中的项目列表,当传递给函数时返回true,并且当您只需要检查一个列表的一个条件时,比传统的for循环快得多

我要寻找的是一个非常快速的函数(比如filter),它不仅可以构建一个新的列表,还可以从旧列表中删除它所需要的项。在单透视快速排序的应用中,这将允许删除一个filter语句,并可能使分区例程的速度提高近2倍

python中内置了这样的函数吗?努比呢?如果没有,最快的实现方法是什么

以下是当前分区代码供参考:

def partition(u):
    lesser = singleQuicksort(filter(lambda num: num <= u[0], u[1:]))
    greater = singleQuicksort(filter(lambda num: num > u[0], u[1:]))
    return lesser, greater
def分区(u): lesser=singleQuicksort(筛选器(lambda num:num u[0],u[1:])) 回报越少,回报越大
numpy
中,有点像。这就是数组索引。当您想“过滤”出
inf
,请考虑以下情况:

a=array([1,2,3,4,inf])
a[isfinite(a)]
或小于3的值

a=array([1,2,3,4,5])
a[a>3]
为什么“有点”?因为索引仍然会创建一个新数组:

>>> a=array([1,2,3,4,inf])
>>> a[isfinite(a)]
array([ 1.,  2.,  3.,  4.])
>>> id(a)
40165288 #your result will differ
>>> id(a[1])
40253288
>>> id(a[isfinite(a)][1])
39747512
>>> a[1]
2.0
>>> a[isfinite(a)][1]
2.0
使用布尔掩码:

def partition(u):
    mask = u[1:] <= u[0]
    return u[1:][mask], u[1:][~mask]
def分区(u):
mask=u[1:]好吧,我仍然希望过滤掉的东西返回。在快速排序中,这将被实现为过滤出大于透视的项目,并将其返回到名为“更大”的列表中,然后将剩余的项目分配到名为“更小”的列表中。这就是我在这里要做的。