You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从整数列表中获取与指定值最接近的上下限数值?

实现获取整数列表中指定值的最接近上限和下限函数

需求很明确:写两个Python函数,分别从无需预先排序的整数列表里,找出和指定值最接近的上限值(比指定值大的数里最接近的)、下限值(比指定值小的数里最接近的)。示例效果如下:

>>> myList = [25, 35, 57, 61, 79]
>>> myNumber = 38
>>> take_closest_high(myList, myNumber)
57
>>> take_closest_low(myList, myNumber)
35

实现思路

你已经知道用min(myList, key=lambda x:abs(x-myNumber))能找到整个列表里和指定值最接近的数,在此基础上我们可以通过调整逻辑,只让符合条件的元素参与比较:

  • 对于上限值:只筛选比指定值大的元素,再从中找与指定值差值最小的
  • 对于下限值:只筛选比指定值小的元素,再从中找与指定值差值最小的

完整函数代码

def take_closest_high(num_list, target):
    # 先过滤出所有大于目标值的元素,无符合元素时返回None(也可按需抛异常)
    candidates = [x for x in num_list if x > target]
    if not candidates:
        return None
    return min(candidates, key=lambda x: abs(x - target))

def take_closest_low(num_list, target):
    candidates = [x for x in num_list if x < target]
    if not candidates:
        return None
    return min(candidates, key=lambda x: abs(x - target))

测试示例

myList = [25, 35, 57, 61, 79]
myNumber = 38

print(take_closest_high(myList, myNumber))  # 输出 57
print(take_closest_low(myList, myNumber))   # 输出 35

简化版(适用于确定存在符合条件元素的场景)

如果你的业务场景里能保证列表一定有大于/小于目标值的元素,可以去掉空值判断,简化成:

def take_closest_high(num_list, target):
    return min((x for x in num_list if x > target), key=lambda x: abs(x - target))

def take_closest_low(num_list, target):
    return min((x for x in num_list if x < target), key=lambda x: abs(x - target))

内容的提问来源于stack exchange,提问作者elnicos456

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 22:40:57