Skip to main content
 首页 » 编程设计

python之寻求一个快速的 filter() 与删除

2025年05月04日10telwanggs

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

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

我正在寻找的是一个非常快速的函数(如过滤器),它不仅会构建一个新列表,而且会删除它从旧列表中获取的项目。在单轴快速排序的应用中,这将允许删除过滤语句并可能将分区例程的速度提高近 2 倍。

python有内置这样的函数吗? numpy 怎么样?如果没有,最快的实现方式是什么?

作为引用,这里是当前的分区代码:

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 

请您参考如下方法:

使用 bool 掩码:

def partition(u): 
    mask = u[1:] <= u[0] 
    return u[1:][mask], u[1:][~mask]