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

如何统计列表中零元素之间的非零元素个数?

实现方法

完全可以实现该统计需求,核心思路是遍历列表时追踪连续非零元素的长度,遇到零截断时记录已统计的非零段长度即可,对应实现代码如下:

def count_nonzero_segments(arr):
    result = []
    current = 0
    for num in arr:
        if num != 0:
            current += 1
        else:
            if current:
                result.append(current)
                current = 0
    # 兼容列表末尾为非零元素的场景
    if current:
        result.append(current)
    return result

# 测试验证
a = [1, 0, 0, 0, 5, 6, 7, 0, 0, 2, 4, 0]
print(count_nonzero_segments(a))

运行上述代码,输出结果为[1, 3, 2],和预期结果完全一致。

逻辑说明

  • 初始化空结果列表、连续非零计数器,计数器初始值为0
  • 逐元素遍历输入列表:
    • 若当前元素非零,计数器累加1
    • 若当前元素为零,且计数器值大于0,说明已经统计完一段被零截断的连续非零元素,将计数器值存入结果列表后重置计数器为0;若计数器为0说明当前处于连续零区间,无操作即可
  • 遍历结束后若计数器仍有值,对应列表结尾是非零元素、没有被零截断的非零段,将该值追加到结果列表即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:27:18