给定一个整数列表和一个目标数字,任务是在列表中找到与给定值最接近的数字是最接近目标的。这个问题可以通过多种方法解决:
如果不能保证列表中元素的顺序,可以使用带有 key 参数的 min() 函数。此方法查找每个元素与目标之间的最小距离,并返回距离最小的元素:
def takeClosest(myList, myNumber): return min(myList, key=lambda x: abs(x - myNumber))
如果已知列表排序后,可以应用二分查找在 O(log n) 时间内更有效地找到最接近的数字:
def takeClosest(myList, myNumber): low = 0 high = len(myList) - 1 while low <= high: mid = (low + high) // 2 if myList[mid] == myNumber: return myList[mid] elif myList[mid] < myNumber: low = mid + 1 else: high = mid - 1 return min([myList[low], myList[high]], key=lambda x: abs(x - myNumber))
以上是如何在列表中找到最接近给定值的数字?的详细内容。更多信息请关注PHP中文网其他相关文章!