在列表中找到與給定值最接近的數字
給定一個整數列表,您可能需要確定哪個數字最接近到給定值。可以使用以下方法有效地解決此任務:
未排序清單:
如果輸入清單未排序,您可以使用內建的min() 函數有一個關鍵論點。這使您可以找到與目標值的絕對差最小的元素。
>>> myList = [4, 1, 88, 44, 3] >>> myNumber = 5 >>> min(myList, key=lambda x: abs(x - myNumber)) 4
此方法需要 O(n) 時間,因為它會迭代整個清單。
排序清單:
或者,如果清單已經排序或您願意對其排序一次,您可以採用二分法。此技術使用二分查找來定位目標值的插入點,有效地在 O(log n) 時間內找到最接近的元素。以下是使用 Python 的 bisect 模組的範例實作:
>>> from bisect import bisect_left >>> myList = sorted([4, 1, 88, 44, 3]) >>> myNumber = 5 >>> bisect_left(myList, myNumber) 2 >>> myList[2] 4
以上是如何找到清單中最接近給定值的數字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!