Python中基于指定函数过滤列表元素的最高效实现方式是什么
Python中基于自定义函数过滤列表的最高效实现方案
问题描述
在Python及常用库中,基于指定函数移除列表中不符合要求的元素、实现列表过滤的最高效方式是什么?
示例参考
- 自定义判断函数:
def func(a): return a % 2 == 1
- 待处理列表:
arr = [1,4,5,8,20,24]
- 期望过滤结果:
new_arr = [1,5]
已尝试方案与疑问
目前已知可以通过列表推导式遍历实现过滤:
new_arr = [i for i in arr if func(i)]
想了解该方案针对大数据集的处理效率是否足够,是否存在更优的实现方式?曾考虑过用numpy实现:修改函数为满足条件返回a、否则返回-1,再调用np.remove删除所有0,不确定这种思路是否可行?
实测性能结论
经过实际运行时长测试,不同方案的性能表现如下:
- 单独使用
filter的速度是所有方案中最快的; - 如果后续需要支持随机访问的列表类型,
filter转列表的性能和列表推导式方法基本相当; - numpy的
np.vectorize(func)(arr)实现速度比其他普通列表处理方法略快。
内容的提问来源于stack exchange,提问作者SeismicSandwhich
相关产品推荐
相关产品推荐

