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

Python:基于最大差值筛选子列表的实现方法

解决方法:按第二个元素分组,保留每组目标子列表

这需求很好实现,核心就是以子列表的第二个元素作为分组依据,只保留每个分组里的第一个条目(或是差值最大的条目,适配不同场景)。我给你两种Python实现方案:

方案1:适用于原始列表已按分组顺序排列(如你的例子)

如果你的原始列表已经是同一组的子列表连续排列,且每组第一个就是差值最大的,用一个集合跟踪已处理的分组键就行,简单高效:

original_list = [[0, 3], [1, 3], [2, 3], [314, 335], [315, 335], [316, 335], [317, 335], [318, 335], [319, 335], [320, 335], [321, 335], [322, 335], [323, 335], [324, 335], [325, 335], [326, 335], [327, 335], [328, 335], [329, 335], [330, 335], [331, 335], [332, 335], [333, 335], [334, 335], [645, 647], [646, 647]]

seen_groups = set()
filtered_result = []

for sublist in original_list:
    group_key = sublist[1]
    if group_key not in seen_groups:
        filtered_result.append(sublist)
        seen_groups.add(group_key)

print(filtered_result)
# 输出:[[0, 3], [314, 335], [645, 647]]

逻辑说明:

  • seen_groups集合用来记录已经处理过的分组键(也就是子列表的第二个元素),避免重复添加同一组的条目。
  • 遍历原始列表时,只要当前子列表的分组键不在集合里,就把它加入结果列表,同时把键存入集合;已经存在的键直接跳过,完美保留每组第一个出现的子列表。

方案2:适用于原始列表无序,需确保保留差值最大的子列表

如果你的原始列表不是按分组顺序排列,或者不确定每组第一个是不是差值最大的,那可以先分组再排序,确保拿到每组差值最大的条目:

from itertools import groupby

original_list = [[0, 3], [1, 3], [2, 3], [314, 335], [315, 335], [316, 335], [317, 335], [318, 335], [319, 335], [320, 335], [321, 335], [322, 335], [323, 335], [324, 335], [325, 335], [326, 335], [327, 335], [328, 335], [329, 335], [330, 335], [331, 335], [332, 335], [333, 335], [334, 335], [645, 647], [646, 647]]

# 先按分组键(第二个元素)排序,保证groupby能正确分组
sorted_list = sorted(original_list, key=lambda x: x[1])
# 按第二个元素分组
groups = groupby(sorted_list, key=lambda x: x[1])

filtered_result = []
for key, group in groups:
    # 把每组的子列表按「第二个元素-第一个元素」的差值降序排序,取第一个(差值最大的)
    sorted_group = sorted(group, key=lambda x: -(x[1] - x[0]))
    filtered_result.append(sorted_group[0])

print(filtered_result)

逻辑说明:

  • itertools.groupby需要列表先按分组键排序,所以第一步先对原始列表排序。
  • 对每个分组内的子列表,按差值(x[1]-x[0])降序排列,这样第一个元素就是该组差值最大的,直接加入结果列表。

两种方案都能满足你的需求,根据原始列表的实际情况选择就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:10:27