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

如何在Python中按子列表前两项去重列表中的重复子列表?

嘿,这个需求很清晰,咱们可以用两种简洁的方式实现,刚好对应你提到的“生成前两项元组”的思路:

方法一:用集合跟踪已出现的组合(直观易懂)

这种方式一步步拆解逻辑,适合新手理解底层原理:

original_list = [[2, 3, 5], [3, 3, 1], [2, 3, 8]]
seen = set()
result = []

for sublist in original_list:
    # 把前两项转成元组(列表不能存入集合,元组是可哈希的)
    key = tuple(sublist[:2])
    if key not in seen:
        seen.add(key)
        result.append(sublist)

print(result)  # 输出: [[2, 3, 5], [3, 3, 1]]

核心逻辑就是用seen集合记录已经处理过的前两项组合,遍历的时候只保留第一次出现的子列表,后面重复的直接跳过。

方法二:用字典去重(简洁高效)

如果你喜欢更紧凑的代码,利用Python 3.7+字典保留插入顺序的特性,可以用推导式快速搞定:

original_list = [[2, 3, 5], [3, 3, 1], [2, 3, 8]]
# 用前两项元组做键,子列表做值,自动去重(保留第一个出现的条目)
unique_dict = {tuple(s[:2]): s for s in original_list}
result = list(unique_dict.values())

print(result)  # 同样得到目标结果

这里字典的键是唯一的,遍历原列表时,后面的重复键会覆盖前面的,但因为我们是按顺序遍历,字典里最终存的是每个组合第一次出现的子列表,转成列表就是你要的结果。

两种方法都能完美解决你的问题,看你更喜欢哪种风格啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:09:55