假设我们有一个包含整数的巨大排序列表。使用不在列表中的上限来切片此列表的最快方法是什么?
例如,假设我们的列表是:
l=list(range(0,1000000, 2))
(这是一个简单的例子,列表可以是任意长度的,没有特定的间隔,所以它不能与某个范围相关)我们想要得到一个切片,其中的项目小于
limit=1001
实现这一目标的最快方法是什么,最好不检查列表中的所有项目?一种常见的方法是使用列表推导式,例如
[i for i in l if i<limit]
,但这样我们必须检查 l 的所有项目并将它们与限制进行比较。如果限制在列表中,我们可以使用类似 l[:l.index(limit)]
的内容。但如果它不在列表中呢?任何的想法?
最佳答案
您可以使用 bisect为了这:
import bisect
print(l[:bisect.bisect_right(l, 1001)])
关于python - 切片上限不在列表中的列表的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66065328/