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

Python统计两个列表相同索引共现连续0簇的位置与数量

双列表公共连续0簇统计代码修复

原有单列表逻辑

实现单个列表的连续0簇统计,遍历列表时每一段连续的0记为1个簇,同时记录每个簇的起止索引,示例输出如下:

Position start 5, Position end 8, Count 1
Position start 12, Position end 12, Count 2
Position start 14, Position end 14, Count 3
Position start 26, Position end 31, Count 4

原单列表实现代码:

a= [1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1]
last_was_0=False
zero_clusters=[]

for i in range(len(a)):
    b=a[i]
    if b==0:
        if last_was_0:
            zero_clusters[-1][-1]+=1
        else:
            zero_clusters.append([i, i])
    last_was_0 = b==0

for i in range(len(zero_clusters)):
    print(f'Position start {zero_clusters[i][0]}, Position end {zero_clusters[i][1]}, Count {i+1}')

双列表适配需求

将逻辑适配到两个等长列表,仅当两个列表相同索引位置的元素都为0时,才计入有效0位置,连续的有效0位置算作1个簇,统计每个簇的起止位置和序号。

现有代码错误点

修改后的代码存在两个核心问题:

  • 变量命名冲突:循环内第一行b=a[i]覆盖了原本存储第二个列表的变量b,后续c=b[i]实际是尝试对整数取索引,逻辑完全错误
  • 状态判断错误:last_was_0的赋值仅判断了单值为0,没有判断两个列表同位置都为0的条件,状态更新不符合需求

修复后可运行代码

a = [1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1]
b = [1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1]

last_was_valid_zero = False
zero_clusters = []

for i in range(len(a)):
    current_valid = a[i] == 0 and b[i] == 0
    if current_valid:
        if last_was_valid_zero:
            zero_clusters[-1][1] = i
        else:
            zero_clusters.append([i, i])
    last_was_valid_zero = current_valid

for idx, cluster in enumerate(zero_clusters, 1):
    print(f'Position start {cluster[0]}, Position end {cluster[1]}, Count {idx}')

输出结果

使用示例中两个完全相同的列表测试,输出如下:

Position start 5, Position end 8, Count 1
Position start 12, Position end 12, Count 2
Position start 14, Position end 14, Count 3
Position start 28, Position end 33, Count 4
Position start 36, Position end 36, Count 5
Position start 38, Position end 38, Count 6
Position start 40, Position end 40, Count 7

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:57:03