给定一个整数列表,我想找到哪个数字最接近我在输入中给出的数字:
>>> myList = [4, 1, 88, 44, 3]
>>> myNumber = 5
>>> takeClosest(myList, myNumber)
...
4
有什么快速的方法可以做到这一点吗?
如果我们不确定列表是否已排序,我们可以使用内置min()功能 http://docs.python.org/library/functions.html?highlight=min#min,查找与指定数字距离最小的元素。
>>> min(myList, key=lambda x:abs(x-myNumber))
4
请注意,它也适用于带有 int 键的字典,例如{1: "a", 2: "b"}
。该方法需要 O(n) 时间。
如果列表已经排序,或者您可以支付仅对数组进行一次排序的代价,请使用中所示的二分方法@劳里茨的回答 https://stackoverflow.com/a/12141511/224671这只需要 O(log n) 时间(但请注意,检查列表是否已排序是 O(n),排序是 O(n log n)。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)