如何统计列表中满足最小长度要求的连续True片段长度,无需numpy/groupby
代码修正方案
你只需要在向结果列表追加连续长度的位置,增加是否满足最小长度要求的判断即可,修正后代码如下:
count = 0 true_sum = [] min_segment = 3 # 可根据实际需求调整该参数值 for v in main_list: if v: count += 1 elif count: # 仅当连续True长度满足最小要求时才存入结果 if count >= min_segment: true_sum.append(count) count = 0 # 处理列表末尾的连续True片段 if count >= min_segment: true_sum.append(count)
代码说明
- 原代码的问题是只要统计到连续True片段结束就直接存入结果,没有做长度校验
- 修正后在两处需要存入结果的位置都增加了
count >= min_segment的判断,长度不足的片段会直接跳过,不会被加入结果列表
示例运行验证
输入参数:
main_list = [True, True, False, False, True, True, True, True, True, False, False, True, True, True]
min_segment=3
运行修正后代码得到输出:[5, 3],和预期结果完全一致。
内容的提问来源于stack exchange,提问作者Vicky
相关产品推荐
相关产品推荐

