这似乎相当容易,但我有点卡在这一个上 我有一个逻辑值列表,例如:
a=[True, False, True, True, False, False, True, True, True]
我想构建另一个列表,其中包含(在子列表中)' a'的索引。这是' True',连续的索引放在同一个子列表中。因此,对于上面的例子,答案是:
[[0], [2,3], [6,7,8]]
答案 0 :(得分:6)
使用itertools.groupby
和enumerate
,可以使用单行代码:
from itertools import groupby
[[i for i, _ in g] for k, g in groupby(enumerate(a), key=lambda x: x[1]) if k]
答案 1 :(得分:0)
以类似的方式,
<section>
<aside>
<section>
<div>
</div>
<h1>John Doe</h1>
<p>placeholder <br /> more placeholder.</p>
</section>
</aside>
</section>
答案 2 :(得分:0)
纯Python,没有libs:
a=[True, False, True, True, False, False, True, True, True]
indcs = [i for i, b in enumerate(a) if b]
if indcs:
o, s = [], [indcs[0]]
for a, b in zip(indcs, indcs[1:] + [indcs[-1]]):
if b-a == 1:
s.append(b)
else:
o.append(s)
s = [b]
else:
o = []
o
Out[32]: [[0], [2, 3], [6, 7, 8]]