剪切/切片排序列表的优化方法

发布于 2021-01-29 15:58:34

Python中是否有任何预制的优化工具/库来剪切/切片“小于”值的列表?

这是问题所在:假设我有一个类似的列表:

a=[1,3,5,7,9]

我想删除所有为<=6的数字,因此结果列表为

[7,9]

6不在列表中,所以我不能使用列表的内置index(6)方法。我可以做类似的事情:

#!/usr/bin/env python
a = [1, 3, 5, 7, 9]
cut=6
for i in range(len(a)-1, -2, -1):
    if a[i] <= cut:
        break
b = a[i+1:]
print "Cut list: %s" % b

如果要从中剪切的索引接近列表的末尾,那将是一种相当快捷的方法,但是如果该项目接近列表的开始,那将是低效率的(假设我要删除所有>2,将会有很多迭代)。

我也可以使用二进制搜索或类似方法实现自己的find方法,但是我想知道是否还有更多…宽范围内建的库来处理这种类型的事情,在其他情况下(例如,如果我需要删除所有的数字>=6)。

先感谢您。

关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以使用bisect模块执行排序搜索:

    >>> import bisect
    >>> a[bisect.bisect_left(a, 6):]
    [7, 9]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看