2017-09-15 149 views
2

看起來相當容易,但我有點卡在這一個。
我有邏輯值的列表,如:Python - 與條件匹配的另一個列表的元素索引列表

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

,我想構建含有另一個列表(子表)是「真」,在連續指數「A」的指標放在同樣的子列表。所以,上面的例子中,答案將是:

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

回答

0

與此類似,

>>> a = [True, False, True, True, False, False, True, True, True] 
>>> from itertools import groupby 
>>> [list(v) for k,v in groupby([_ if a[_] else None for _ in range(len(a)) ], lambda x: not x is None) if k] 
[[0], [2, 3], [6, 7, 8]] 
0

純Python,no 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]] 
相關問題