efficient interval containment lookup

Tim Chase python.list at tim.thechases.com
Tue Jan 13 05:13:06 EST 2009


Per Freem wrote:
> i forgot to add, my naive_find is:
> 
> def naive_find(intervals, start, stop):
>   results = []
>   for interval in intervals:
>     if interval.start >= start and interval.stop <= stop:
>       results.append(interval)
>   return results

I don't know if using a list-comprehension here is a better 
choice, but your code looks very much like

   def naive_find(intervals, start, stop):
     return [interval for interval in intervals
       if interval.start >= start and interval.stop <= stop]

which may even be simple enough to include in-line rather than as 
a sub-function (with any associated call overhead).

I've found that usually Python's smart/efficient handling of 
list-comprehensions can make an appreciable difference within 
critical-loop constructs.

-tkc







More information about the Python-list mailing list