def close_outer(itr, b):
"""
For sorted iterable `itr` and numeric `b`, return the index of the value in
itr that is closest to b. Also return the value itself and the distance
between itr and b.
"""
i, length, first, last = bisect(itr, b), len(itr), itr[0], itr[-1]
if i == length:
return length - 1, last, b - last
if i == 0:
return 0, first, first - b
vnext, vprev = itr[i], itr[i - 1]
dnext, dprev = vnext - b, b - vprev
if dnext < dprev:
return i, vnext, dnext
return i - 1, vprev, dprev
评论列表
文章目录