Python如何按列表相邻元素差值大小筛选元素生成目标新列表
代码修改方案
原代码错误原因
- 判断条件写反:需求要求后一个相邻差值大于前一个差值时新增元素,原代码写反了判断逻辑,测试列表
[1,2,4,7]的差值逐次增大,永远不满足原判断条件,因此输出空列表 - 元素重复追加逻辑错误:每次循环同时加入
lst4[i]和lst4[i+1]会导致元素重复写入结果 - 未处理边界场景:没有兼容列表长度不足3的情况,也没有正确处理首尾元素的加入规则
正确实现代码
lst4 = [1, 2, 4, 6, 5, 9] # 可替换为其他测试列表 # 列表长度小于3时无需筛选直接返回 if len(lst4) < 3: res = lst4.copy() else: # 初始化结果列表,默认加入前两个元素 res = [lst4[0], lst4[1]] # 记录上一个满足条件的差值 last_diff = abs(lst4[1] - lst4[0]) # 从第三个元素开始遍历判断 for num in lst4[2:]: current_diff = abs(num - res[-1]) # 当前差值大于上一个差值时加入结果 if current_diff > last_diff: res.append(num) last_diff = current_diff print(res)
输出验证
输入测试列表[1,2,4,6,5,9]时,输出结果为[1,2,4,9],符合需求要求。
内容的提问来源于stack exchange,提问作者sds
相关产品推荐
相关产品推荐

