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/