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

如何检测二维列表中的重复子列表并统计其重复次数

二维列表子列表重复检测与次数统计实现方案

核心前提:Python中列表属于可变不可哈希类型,无法直接作为字典键或传入Counter统计,需要先转为不可变的元组类型处理。

方法1:全量统计所有子列表的重复次数(推荐)

使用Python标准库的collections.Counter实现,效率高代码简洁:

from collections import Counter

# 示例二维列表
grid = [[1,2,3], [4,5,6], [1,2,3], [7,8,9], [4,5,6], [1,2,3]]

# 将每个子列表转为元组后统计次数
row_counts = Counter(tuple(row) for row in grid)

# 输出所有重复的子列表及次数
for row_tuple, count in row_counts.items():
    if count > 1:
        print(f"子列表{list(row_tuple)} 重复次数:{count}")

# 获取指定子列表的重复次数
target_row = [1,2,3]
target_count = row_counts.get(tuple(target_row), 0)
print(f"指定子列表的重复次数为:{target_count}")

方法2:手动实现统计逻辑(无需导入库)

如果不想依赖标准库,可以用普通字典手动遍历统计:

grid = [[1,2,3], [4,5,6], [1,2,3], [7,8,9], [4,5,6], [1,2,3]]
row_counts = {}

for row in grid:
    row_tuple = tuple(row)
    row_counts[row_tuple] = row_counts.get(row_tuple, 0) + 1

# 后续查询逻辑和方法1一致

方法3:仅统计单个指定子列表的重复次数

如果不需要统计所有子列表,仅需要查询某一个子列表的出现次数,用生成器表达式遍历即可,性能更高:

target_row = [1,2,3]
grid = [[1,2,3], [4,5,6], [1,2,3], [7,8,9]]
count = sum(1 for row in grid if row == target_row)
print(f"指定子列表重复次数为:{count}")

注意:如果你的子列表中还嵌套了可变类型(比如子列表里还有列表),需要先递归转为可哈希的嵌套元组再统计

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:06:03