[英]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.