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

Python如何实现返回列表中相邻差值最大的两个数字?

实现方案

你可以通过以下两种方式完成需求:


方式1:复用现有partition函数

你的partition函数已经可以返回所有相邻元素的差值列表,只需要找到最大差值对应的索引,再从原列表取出对应位置的两个元素即可:

def partition(lst: list):
    f = []
    for i in range(len(lst)):
        if i < len(lst)-1:
            diff = lst[i+1] - lst[i]
            f.append(diff)
        else:
            return f

def grouping(lst: list):
    diff_list = partition(lst)
    max_diff_index = diff_list.index(max(diff_list))
    return [lst[max_diff_index], lst[max_diff_index + 1]]

# 测试代码
print(grouping([1,3,5,7,12,14,15]))

运行后输出结果为 [7, 12],符合预期。如果列表中存在多个相同的最大相邻差值,该实现会返回第一个出现最大差值的元素对。


方式2:单次遍历实现(空间复杂度更低)

不需要额外存储所有差值,遍历过程中同步记录当前最大差值和对应的元素对即可,空间复杂度为O(1):

def grouping(lst: list):
    # 处理边界情况:列表元素不足2个时直接返回空
    if len(lst) < 2:
        return []
    max_diff = -1
    result_pair = []
    for i in range(len(lst)-1):
        current_diff = lst[i+1] - lst[i]
        if current_diff > max_diff:
            max_diff = current_diff
            result_pair = [lst[i], lst[i+1]]
    return result_pair

# 测试代码
print(grouping([1,3,5,7,12,14,15]))

如果你的输入列表不是升序排列,需要计算绝对差值的话,把current_diff = lst[i+1] - lst[i]修改为current_diff = abs(lst[i+1] - lst[i])即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:24:03