繁体   English   中英

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

[英]Finding identical consecutive entries in a list and finding how many consecutive entries there are

我有一个 Boolean 值的列表,例如

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)。 如何在不导入任何新内容的情况下编写代码来解决这个问题。 谢谢:)。

仅具有内置功能的基于生成器的实现:

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)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM