在列表中查找相同的连续条目,并找到多少个连续条目

时间:2019-10-31 17:11:35

标签: python

我有一个布尔值列表,例如

bool_list = [True, True, False, False, True, True, True, True, True, False] 

,我需要以[[a,b],[c,d],...]这样的方式列出列表,其中列表中的第一个条目(例如a和c)是索引bool_list中第一个True的数量,其中有2个或更多连续的True条目(在这种情况下,a = 0和c = 4),列表中的第二个条目(例如b和d)是bool_list中连续的True条目的数量(在这种情况下,b = 2,d = 4)。如何编写代码以解决此问题而不导入任何新内容。谢谢:)。

1 个答案:

答案 0 :(得分:0)

仅内置的基于生成器的实现:

def gen(bl):
    count = true_start = 0
    for i, b in enumerate(bl):
        if b:
            if not count:
                true_start = i
            count += 1
        elif count > 1:
            yield (true_start, count)
            count = 0
    if count:
        yield (true_start, count)

>>> bool_list = [True, True, False, False, True, True, True, True, True, False]
>>> list(gen(bool_list))
[(0, 2), (4, 5)]