擅长:python、mysql、java
<p>如果你把每个范围看作一组。您需要一个目标范围,使您与测试集有最大的交集。在</p>
<p>因此,如果计算每个目标和测试之间的交集长度,并返回最大交集的索引,那么您应该得到您想要的结果。在</p>
<p>下面是一些粗略的代码:</p>
<pre><code>def which_range( testRange, *targetRanges ):
testRange = set( testRange )
tests = [ ( i, len( set( targetRange ).intersection( testRange ) ) ) for i, targetRange in enumerate( targetRanges ) ]
return max( tests, key=lambda x: x[1] )[0]
>>> which_range( range(9900,10500), range(1,10000), range(10001,20000), range(20001,25000) )
1 # the second target range
>>> which_range( range(900,5000), range(1,10000), range(10001,20000), range(20001,25000) )
0 # the first target range
</code></pre>