擅长:python、mysql、java
<p>如果你在寻找速度,你可以使用idx的左和右,也就是说,从这个范围得到下限和上限,然后检查数字是否在界限之间,即</p>
<pre><code>list(lower <= 900 <= upper for (lower, upper) in zip(idx.left,idx.right))
</code></pre>
<p>或者</p>
^{pr2}$
<pre>
[True, False, False]
</pre>
<p>对于小数据</p>
<pre><code>%%timeit
list(lower <= 900 <= upper for (lower, upper) in zip(idx.left,idx.right))
100000 loops, best of 3: 11.26 µs per loop
%%timeit
[900 in y for y in idx]
100000 loops, best of 3: 9.26 µs per loop
</code></pre>
<p>对于大数据</p>
<pre><code>idx = pd.IntervalIndex.from_tuples(data*10000)
%%timeit
list(lower <= 900 <= upper for (lower, upper) in zip(idx.left,idx.right))
10 loops, best of 3: 29.2 ms per loop
%%timeit
[900 in y for y in idx]
10 loops, best of 3: 64.6 ms per loop
</code></pre>
<p>这种方法比你的大数据解决方案要好。在</p>