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

如何处理嵌套列表,提取所有末尾元素值相同的子列表?

实现方案

思路非常清晰,不需要手动维护索引遍历,分两步即可完成:先统计所有子列表末尾元素的出现频次,再筛选出末尾元素属于「出现次数≥2」集合的子列表即可,时间复杂度为O(n),效率远高于双重循环比对的方案。

你提到的集合intersection方法逻辑和以下方案的筛选逻辑是共通的,本质都是匹配元素是否属于重复值集合。

完整代码示例

from collections import Counter

# 示例中a/b/c等若为字符串可自行调整引号,此处统一按字符串处理
lol = [[0,'a'], [0,'b'],
       [1,'b'], [1,'c'],
       [2,'d'], [2,'e'],
       [2,'g'], [2,'b'],
       [3,'e'], [3,'f']]

# 1. 统计所有子列表第二个元素的出现次数
counts = Counter(sublist[1] for sublist in lol)
# 2. 提取出现次数≥2的元素,转集合提升查询效率
duplicated_vals = {k for k, v in counts.items() if v >= 2}
# 3. 直接过滤原列表得到结果
result = [sublist for sublist in lol if sublist[1] in duplicated_vals]

# 输出验证
for item in result:
    print(item)

输出结果

[0, 'b']
[1, 'b']
[2, 'b']
[2, 'e']
[3, 'e']

无依赖原生实现

如果不想导入标准库collections,也可以用原生字典实现计数逻辑,后续筛选步骤和上面完全一致:

counts = {}
for sublist in lol:
    val = sublist[1]
    counts[val] = counts.get(val, 0) + 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:54:03