给定一个整数列表,我想找到哪个数字与我在输入中提供的数字最接近:
>>> myList = [4, 1, 88, 44, 3]
>>> myNumber = 5
>>> takeClosest(myList, myNumber)
...
4
有什么快速的方法可以做到这一点吗?
如果不确定列表是否已排序,则可以使用内置min()
函数,查找与指定数字之间的最小距离的元素。
>>> min(myList, key=lambda x:abs(x-myNumber))
4
请注意,它也可用于带有int键的字典,例如{1: "a", 2: "b"}
。此方法花费O(n)时间。
如果列表已经排序,或者您只需要为数组排序一次,就可以使用@Lauritz答案中所示的二等分方法,该方法只需要O(log n)时间(但请注意,检查列表是否已排序为O) (n),排序为O(n log n)。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句