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

Python中如何判断列表包含元组全部元素并统计匹配次数

高效实现方案

原有代码的问题

  • 判断条件逻辑完全错误:tup[0] in list_a是判断元素是否存在于整个list_a列表,而非当前遍历的子列表;tup[1] in list_b更是错误判断到元组列表中,所以输出结果全部不符合预期。
  • 没有利用数据结构优化查询效率:Python列表的in查询是O(n)复杂度,子列表长度越长、数量越多,重复查询的性能损耗越大。

核心优化思路

预先把list_a的所有子列表转换为集合,集合的in查询是O(1)复杂度,可大幅降低重复判断的时间开销。

完整实现代码

list_a = [[2,6,7,1], [1,9,4],[2,6,7], [4,1,6,2,8,9,3]]
list_b = [(1,2), (6,9), (2,7)]

# 预转换子列表为集合,仅需执行一次
set_a = [set(sublist) for sublist in list_a]

for tup in list_b:
    x, y = tup
    counter = 0
    for sub_idx, sub_set in enumerate(set_a):
        has_both = x in sub_set and y in sub_set
        counter += has_both
        # 输出逐行匹配结果
        print(f"{tup} in {list_a[sub_idx]} = {has_both}")
    # 输出总匹配次数
    print(f"{tup} occurrence count = {counter}")

运行后输出和参考效果完全一致。

更简洁的列表推导写法

如果只需要统计总次数,不需要逐行输出匹配结果,可以用列表推导简化:

set_a = [set(sublist) for sublist in list_a]
count_result = {
    tup: sum(1 for s in set_a if tup[0] in s and tup[1] in s)
    for tup in list_b
}
# 直接输出各元组的匹配次数
print(count_result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:24:05