首页 > 解决方案 > 连续计数 1

问题描述

我有一个任务,我要计算一个序列中连续 1:s 的出现次数。这就是我所在的地方。为什么这不起作用?

def count11(seq):
    x = 0
    for i in seq:
        if i == 1:
            if seq[i+1] == 1:
                x += 1
    return x

print(count11([0, 0, 1, 1, 1, 0]))

编辑:该函数应该计算一对的数量,所以给定的序列应该输出 2。

标签: python

解决方案


你也可以做一个单行:

import re
import math

def count(seq):
    return math.ceil(len(max(re.sub(r"[^1]"," ","".join(map(str, seq))).split(), key=len))/2)

print (count([0, 0, 1, 1, 1, 0]))

在您的示例中,这将返回最大对数(最长重复 / 2 次向上),两个(重叠)对。


推荐阅读