给定一个排序列表,例如[1.1, 2.2, 3.3]
和一个边界值math.pi*2
,返回最接近的任何给定值[0 - math.pi*2)
该函数应该返回值的索引,以便在f(1.2)
返回0
时f(2.1)
返回1
,并且f(6.0)
应该环绕 atmath.pi*2
和 return 0
,在给定边界值的情况下,它更接近 1.1 而不是 3.3。只是为了完全明确,这个函数也应该在低端环绕,以便f(1.0, [5.0, 6.0], bound = math.pi*2)
返回1
。
用例是将弧度中的任意角度映射到列表中最近的现有有效角度。我已经在 python 中用 写过这种函数几次bisect
,但代码总是会冒犯我的审美。边缘情况的高复杂性和数量似乎与函数的直观简单性不成比例。所以我想问是否有人能提出一个令人满意的实现,无论是在效率还是优雅方面。