Python - 与条件匹配的另一个列表的元素索引列表

时间:2017-09-15 20:45:29

标签: python list indexing conditional-statements sublist

这似乎相当容易,但我有点卡在这一个上 我有一个逻辑值列表,例如:

a=[True, False, True, True, False, False, True, True, True]

我想构建另一个列表,其中包含(在子列表中)' a'的索引。这是' True',连续的索引放在同一个子列表中。因此,对于上面的例子,答案是:

[[0], [2,3], [6,7,8]] 

3 个答案:

答案 0 :(得分:6)

使用itertools.groupbyenumerate,可以使用单行代码:

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]]
相关问题