当前位置: 首页 > 知识库问答 >
问题:

从整数列表中获取最接近给定值的数字

宦源
2023-03-14

给定一个整数列表,我想找出哪个数字最接近我在输入中给出的一个数字:

>>> myList = [4, 1, 88, 44, 3]
>>> myNumber = 5
>>> takeClosest(myList, myNumber)
...
4

有什么快速的方法可以做到这一点吗?

共有1个答案

伊裕
2023-03-14

如果我们不确定列表是否排序,我们可以使用内置的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)。)

 类似资料:
  • 问题内容: 给定一个整数列表,我想找到哪个数字与我在输入中提供的数字最接近: 有什么快速的方法可以做到这一点吗? 问题答案: 如果不确定列表是否已排序,则可以使用内置函数,查找与指定数字之间的最小距离的元素。 请注意,它也可用于带有int键的字典,例如。此方法花费O(n)时间。 如果列表已经排序,或者您可以只对数组进行一次排序,请使用@Lauritz答案中所示的二等分方法,该方法只需要O(logn

  • 问题内容: 我有一个清单: 如何将带有动态间隙的最近值分组,并创建这样的元组,最快的方法是什么?: 问题答案: 喜欢 首先,我们计算顺序元素之间的平均差异,然后将差异小于平均值的元素分组在一起。

  • 问题内容: 我有一系列正/负整数 现在,我想针对此数组测试另一个int,并返回最接近该int的数字。 例如,如果我使用数字,我将从数字中取回第4项,那么做这种事情的最佳方法是什么? 那不行 有什么好的方法建议吗? 问题答案: 始终使用要考虑的第一个元素初始化最小/最大函数。使用诸如或这样的东西是获得答案的幼稚方式;如果以后再更改数据类型(糟糕,而且有很大不同!),或者将来您想为 任何 数据类型编写

  • 我的问题是如何编写一个方法,它将Double的ArrayList作为参数,并返回数组列表中最接近-3.75的Double。 有人帮忙吗?还是更好的执行任务的方法?

  • 问题内容: 给定此基准日期: 我想在列表中找到一个包含最接近日期的元组,但是它不能是更早的日期。 所以这里的输出应该是(它不能是第三个元组,因为那里的日期早于基准日期) 我的问题是,是否存在用于此类日期比较的任何模块?我试图先将所有数据更改为格式,然后进行比较,但是我的代码变得很丑陋,而且切片很多。 @编辑: 要测试的大清单: 要测试的大清单: 问题答案: 将日期转换为datetime对象,所以现

  • 问题内容: 我需要从MySQL表中获取与当前日期最接近的日期。 这是我的桌子: 因此,如果查询今天运行,它将返回 任何帮助深表感谢。谢谢 问题答案: