python - 切割/切片排序列表的优化方法

标签 python list find

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 的项目,将会有很多迭代)。

我也可以使用二进制搜索等实现我自己的查找方法,但我想知道是否有一个范围更广的内置库来处理我可以在其他情况下重用的这类事情(例如,如果我需要删除所有 >=6 的数字)。

提前谢谢你。

最佳答案

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

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

关于python - 切割/切片排序列表的优化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13631720/

相关文章:

python - 尝试显示注册表单时 Django 出错

python - Pandas dataframe - 如何连接具有相同列的多个数据框

python - Django manage.py runserver 抛出 ImportError : AdminMediaHandler

find - 在 hp-ux 上压缩查找结果

python - 将列表编号转换为返回的另一个值 [python]

python - 如何遍历包含三对值的元组列表?

list - Prolog-查找列表的产品

.net - ConcurrentDictionary 的列表顺序是否得到保证?

c++ - 我可以在 C++ 的 find() 中使用\t 吗?

jQuery 查找页面中的特定文本