You can use filter combined with next:
ranges = [[1, 10],[11, 20],[21,30]]
target = 17
target_range = next(filter(lambda range: range[0] < target < range[1], ranges))
target_range will be [11, 20] in this case.
filter here is responsible for excluding ranges that do not have target within them. And assuming that the ranges do not overlap, filter will exclude every range but one, and we can get that one with next.
You can also change up the criteria for what ranges are kept. If you consider 11 part of [11, 20] (right on the border), you can do range[0] <= target <= range[1] instead.