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

从嵌套列表移除含非A/B/L元素的子列表并查找其索引

解决嵌套列表过滤与无效索引记录问题

我来帮你搞定这个需求!你的核心目标是移除所有包含非'A'/'B'/'L'元素的子列表,同时记录这些无效子列表的原始索引。之前的代码只做了元素检查,但没处理索引和列表过滤,我给你整理了更清晰的实现方案:

实现思路

  1. 遍历原始列表的每个子列表,同时获取它的索引(用enumerate可以直接拿到索引和子列表,不用手动维护计数器)
  2. 对每个子列表,检查其中所有元素的第一个值是否都属于{'A', 'B', 'L'}(用all()函数可以简洁完成批量检查)
  3. 把符合条件的子列表加入有效列表,不符合的子列表索引记录到无效索引列表

完整代码示例

# 原始嵌套列表
lists = [[['L', 5], ['B', 20], ['A', 10]], [['B', 200], ['J', 90]], [['L', 5], ['L', 6]], [['A', 10], ['L', 12], ['A', 11], ['A', 15]]]

# 初始化存储结果的变量
valid_lists = []
invalid_indices = []

# 遍历每个子列表,同时获取索引
for idx, sub_list in enumerate(lists):
    # 检查当前子列表的所有元素是否都符合要求
    is_valid = all(item[0] in {'A', 'B', 'L'} for item in sub_list)
    if is_valid:
        valid_lists.append(sub_list)
    else:
        invalid_indices.append(idx)

# 输出结果
print("处理后的有效列表:")
print(valid_lists)
print("\n无效子列表的索引:")
print(invalid_indices)

运行结果

运行这段代码后,你会得到:

处理后的有效列表:
[[['L', 5], ['B', 20], ['A', 10]], [['L', 5], ['L', 6]], [['A', 10], ['L', 12], ['A', 11], ['A', 15]]]

无效子列表的索引:
[1]

代码优势说明

  • 用enumerate替代手动维护索引,避免了循环计数出错的问题
  • 用all()函数替代嵌套循环检查,代码更简洁易读,逻辑更清晰
  • 同时完成有效列表收集和无效索引记录,一次遍历搞定两个需求,效率更高

内容的提问来源于stack exchange,提问作者Kiều Trinh Đỗ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:53:29