是否存在允许有效范围查询的python数据结构?

sla*_*tir 1 python window range data-structures

说,你有一个整数列表,例如

foo = [3,9,23,54,77,123,...]
Run Code Online (Sandbox Code Playgroud)

是否存在允许查询的高效数据结构

x = everything in foo between 10 and 100
Run Code Online (Sandbox Code Playgroud)

以便

x == [23,54,77]
Run Code Online (Sandbox Code Playgroud)

或x =一切<50

x = [3,9,23]
Run Code Online (Sandbox Code Playgroud)

等等?

Dan*_*man 5

假设这些整数已经排序,它不是您想要的数据结构,而是一种算法:即二进制搜索.在Python中,这是由bisect模块提供的.

因此,例如,要查找小于50的所有成员:

from bisect import bisect_left
i = bisect_left(foo, 50)
result = foo[:i]
Run Code Online (Sandbox Code Playgroud)