def lower_bound(values, target): left, right = 0, len(values) while left < right: middle = (left + right) // 2 if values[middle] < target: left = middle + 1 else: right = middle return left print(lower_bound([2, 5, 5, 11, 14], 5)) print(lower_bound([2, 5, 5, 11, 14], 99)) print(lower_bound([], 3))