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

如何筛选f_list中与前后相邻元素差值均大于g的元素?

筛选列表符合相邻差值要求元素的实现方案

原代码问题梳理

  • 三重循环逻辑错误,会导致元素重复添加,时间复杂度高达O(n^3)
  • 相邻差值计算逻辑错误,索引为0时取i-1会错误获取列表末尾元素
  • 判断条件不符合需求,错误判断x>g而非相邻差值大于g,同时存在newlist和new_list变量名不一致的笔误
  • 没有排除首尾无相邻元素的边界情况

正确实现代码

def func(f_list, g):
    new_list = []
    # 首尾元素没有前后两个相邻元素,直接跳过,遍历范围为索引1到len(f_list)-2
    for i in range(1, len(f_list) - 1):
        # 计算当前元素与前后相邻元素的绝对差值
        prev_diff = abs(f_list[i] - f_list[i-1])
        next_diff = abs(f_list[i] - f_list[i+1])
        if prev_diff > g and next_diff > g:
            new_list.append(f_list[i])
    return new_list

使用说明

  • 单次遍历即可完成筛选,时间复杂度为O(n),列表长度小于3时直接返回空列表
  • 上述代码默认计算绝对差值,如果你需要的是有向差值(比如要求当前元素比前一个大g以上、同时比后一个也大g以上),去掉abs()即可:
    prev_diff = f_list[i] - f_list[i-1]
    next_diff = f_list[i] - f_list[i+1]
    

测试示例

f_list = [1, 5, 3, 10, 2]
g = 3
print(func(f_list, g)) 
# 输出:[10],10和前一个元素3差7>3,和后一个元素2差8>3,符合要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:45:02