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

实现给定嵌套列表内所有可能组合的计数统计

嵌套列表全组合出现频次统计实现方案

核心实现逻辑

该需求对应关联分析场景下的全量候选项集频次统计,整体逻辑为:

  • 遍历嵌套列表中的每一个独立子列表
  • 为每个子列表生成其包含的所有非空元素组合
  • 逐个累加每个组合在所有子列表中的出现次数,最终输出统计结果

可直接运行的Python实现

首先需要修正原始列表的写法:示例中的A、B、C、D为列表元素,使用时需要标注为字符串类型,避免触发变量未定义错误,原始列表的正确初始化格式为:
list_1 = [['A','B','C','D'], ['A','D'], ['B','C','D']]

实现过程需要用到Python标准库的两个工具:

  • itertools.combinations:快速生成指定集合的所有固定长度元素组合
  • collections.Counter:一键完成可哈希对象的频次统计
    具体代码如下:
from itertools import combinations
from collections import Counter

# 初始化目标嵌套列表
list_1 = [['A','B','C','D'], ['A','D'], ['B','C','D']]

combo_frequency = Counter()
for sub_list in list_1:
    # 对单个子列表,生成从长度1到子列表全长的所有非空组合
    for combo_length in range(1, len(sub_list) + 1):
        # 组合转成元组格式,作为可哈希的计数键
        for combo in combinations(sub_list, combo_length):
            combo_frequency[combo] += 1

# 按频次从高到低打印统计结果
for combo, count in sorted(combo_frequency.items(), key=lambda item: -item[1]):
    print(f"组合 {combo}:出现 {count} 次")

实际运行效果

针对示例列表,代码运行后输出的核心统计结果为:

  • 单元素组合:('D',) 出现3次,('A',)、('B',)、('C',) 各出现2次
  • 双元素组合:('A','D')、('B','C')、('B','D')、('C','D') 各出现2次
  • 三元素组合:('B','C','D') 出现2次,其余三元素组合各出现1次
  • 四元素组合:('A','B','C','D') 出现1次

注意事项

  • 如果单个子列表内存在重复元素,需要在生成组合前先对sub_list做去重处理(即将循环内的sub_list替换为set(sub_list)),避免同组内的重复元素生成无意义的冗余组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 08:27:05