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

Python实现:统计数组中长度≥k的连续0序列个数

Pythonic 统计数组中连续0序列长度≥k的出现次数

需求说明

给定数组 ts 和阈值 k,统计数组中连续0序列长度≥k的出现次数,规则为:找到一个符合条件的序列后,从下一个非0元素开始继续搜索。

示例输入

ts = [1, 6, 2, 9, 0, 0, 0, 0, 0, 3, 6, 4, 0, 0, 5, 2, 3]
k = 4

Pythonic 解决方案

利用itertools.groupby(Python标准库工具)实现,这是处理连续相同元素分组场景的最优方式之一:

基础实现

import itertools

ts = [1, 6, 2, 9, 0, 0, 0, 0, 0, 3, 6, 4, 0, 0, 5, 2, 3]
k = 4

count = 0
for key, group in itertools.groupby(ts):
    if key == 0:
        # 将分组迭代器转为列表,计算长度
        seq_len = len(list(group))
        if seq_len >= k:
            count += 1

print(count)  # 输出:1

简化版(一行代码)

用生成器表达式进一步简化,更符合Python简洁风格:

import itertools

ts = [1, 6, 2, 9, 0, 0, 0, 0, 0, 3, 6, 4, 0, 0, 5, 2, 3]
k = 4

count = sum(1 for key, group in itertools.groupby(ts) if key == 0 and len(list(group)) >= k)
print(count)  # 输出:1

解法说明

itertools.groupby会自动将数组中连续的相同元素聚合成分组,每个分组返回(元素值, 分组迭代器)的元组。我们只需筛选出元素值为0的分组,判断其长度是否≥k,符合条件则计数加1——完全贴合需求中“处理完一个序列后从下一个非0元素继续搜索”的规则,因为分组本身就是按连续相同元素划分的,处理完0分组后,下一个分组必然从非0元素开始。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:37:20