我有一个布尔值列表,例如
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)。如何编写代码以解决此问题而不导入任何新内容。谢谢:)。
答案 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)]