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

如何判断list2是否包含list1中某一个嵌套子列表的全部元素

Python列表包含校验实现方案

基础实现(适用于子列表无重复元素的场景)

核心逻辑:将list2转为集合降低元素查询的时间复杂度,再遍历list1的每个嵌套子列表,校验子列表的全部元素是否都存在于list2的集合中,只要有1个满足条件即可返回结果。

def check_sub_contains(list1: list[list], list2: list) -> bool:
    set2 = set(list2)
    # 只要存在任意一个子列表满足条件就返回True
    return any(all(item in set2 for item in sub_list) for sub_list in list1)

# 代入示例数据测试
list1 = [[1, 2, 3], [4, 5, 6]]
list2 = [1 ,8 ,7 ,2, 0, 3]
print(check_sub_contains(list1, list2))
# 输出:True

如果需要获取具体匹配到的子列表,可调整返回逻辑:

def get_matched_sub(list1: list[list], list2: list):
    set2 = set(list2)
    for sub in list1:
        if all(item in set2 for item in sub):
            return sub
    # 无匹配时返回None
    return None

兼容子列表含重复元素的场景

如果嵌套子列表存在重复元素,使用集合的方式会丢失计数信息,此时可以借助Counter统计元素出现次数进行校验:

from collections import Counter

def check_sub_contains_with_dup(list1: list[list], list2: list) -> bool:
    count2 = Counter(list2)
    for sub in list1:
        sub_count = Counter(sub)
        # 校验list2的所有元素计数都满足子列表的要求
        if all(count2.get(k, 0) >= v for k, v in sub_count.items()):
            return True
    return False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:27:06