不使用numpy/groupby统计Python列表中连续True段的元素个数
实现方案
仅需一次遍历列表即可完成统计,无需引入任何第三方库,时间复杂度为O(n),仅占用极小的临时变量空间。
完整可运行代码
main_list = [True, True, False, False, True, True, True, True, True, False] current_count = 0 true_sum = [] for val in main_list: if val: current_count += 1 else: if current_count: true_sum.append(current_count) current_count = 0 # 处理列表末尾为True的边界情况,避免遗漏最后一段连续True if current_count: true_sum.append(current_count) print(true_sum) # 输出:[2, 5]
代码说明
- 遍历过程中遇到
True就给当前连续计数加1 - 遇到
False时如果当前存在有效连续计数,就将计数存入结果列表,同时重置当前计数 - 遍历结束后额外做一次计数判断,覆盖列表末尾是连续True的特殊场景
常见错误说明
你之前编写的true_sum = [sum(1 for i in main_list if i==True)]会统计列表中所有True的总数量,不会拆分连续段,因此只会得到[7],不符合分段统计的需求。
内容的提问来源于stack exchange,提问作者yasra
相关产品推荐
相关产品推荐

