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

Python嵌套列表筛选问题:基于子元素数值和的子集过滤

问题解决思路

你的代码存在几个关键问题:

  • 硬编码循环次数(i<10),无法适配原列表的实际长度,后续列表扩容也会失效
  • 求和时错误使用list[i][2][2],应该用[-1]来稳定获取每个最内层子列表的最后一个元素
  • 条件判断写成<8,不符合规则要求的≤8
  • 逻辑错误:没有将符合条件的子列表添加到new_list,反而去判断元素是否已存在,完全偏离需求
  • 语法错误:if语句末尾缺少冒号,代码缩进不规范

正确实现代码

# 修正原列表的语法错误(补充缺失逗号,将标识符改为字符串避免报错)
original_list = [
    [['a', 2], ['c', 3], ['e', 3]],
    [['g', 4], ['i', 4], ['k', 3]],
    [['b', 3], ['d', 2], ['f', 2]]
]

new_list = []

# 遍历每个二级子列表,自动适配原列表长度
for sublist in original_list:
    # 计算当前二级子列表中所有最内层子列表最后一个元素的和
    total = sum(item[-1] for item in sublist)
    # 符合条件则加入新列表
    if total <= 8:
        new_list.append(sublist)

print(new_list)

代码说明

  • 用for循环遍历原列表,无需关心列表长度,后续扩容也能正常处理
  • 用生成器表达式sum(item[-1] for item in sublist)求和,不用硬编码内层元素索引,即使二级子列表的元素数量变化也能稳定工作
  • 严格按照规则判断total <=8,符合条件就将当前二级子列表追加到new_list
  • 修正了原列表的语法问题(补充逗号、将a这类裸标识符改为字符串,避免Python识别为未定义变量报错)

运行后new_list的结果为:

[[['a', 2], ['c', 3], ['e', 3]], [['b', 3], ['d', 2], ['f', 2]]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:53:19