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

如何遍历两个嵌套列表并基于list1长度判断子集(避免重复输出)

实现28条结果输出的解决方案

需求说明

检查list1的每个元素是否是list2中对应子列表(即[cor[1] for cor in list2])的子集,最终生成一个长度为28(与list1长度一致)的结果列表,示例格式如下:

[(['1'], [43, 44, 45, 46, 47, 48], [43, 44, 45, 46, 47, 48, ..., 71], "YES"),
 ([0, 1, 2, 3, 4, 5, 6, 7], "NO")]

现有问题

原嵌套循环代码会遍历list2的3个元素,因此输出28×3=84条结果,无法满足仅输出28条的需求。

解决方案代码

result = []
for ent in list1:
    matched = False
    # 遍历list2寻找匹配的子列表
    for cor in list2:
        if set(ent).issubset(cor[1]):
            result.append((cor[0], ent, cor[1], "YES"))
            matched = True
            break  # 找到匹配后停止当前元素的遍历
    if not matched:
        result.append((ent, "NO"))

# 输出结果列表,共28条元素
for item in result:
    print(item)

逻辑说明

  1. 初始化空列表result用于存储最终结果
  2. 遍历list1中的每个元素ent:
    • 设置matched标记位,初始为False
    • 遍历list2中的每个子列表cor,判断ent是否是cor[1]的子集
    • 找到匹配项时,按示例格式将结果加入result,标记matched为True并跳出内层循环,避免重复匹配
    • 若遍历完list2都未找到匹配,按格式加入(ent, "NO")到result
  3. 最终result的长度与list1一致,为28条

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:15:31