gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:21 24 4
gpt4 key购买 nike

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

内置的 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]

关于python - 寻求一个快速的 filter() 与删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18605089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com