с помощью itertools.compress
:
>>> a=[1,0,0,1,0,1,1,1,0,1,0,0]
>>> index_1 = [x for x in itertools.compress(range(len(a)),a)]
>>> index_1
[0, 3, 5, 6, 7, 9]
>>> index_0 = [x for x in itertools.compress(range(len(a)),map(lambda x:not x,a))]
>>> index_0
[1, 2, 4, 8, 10, 11]
можно достичь, используя один цикл: для повышения эффективности и эффективности
>>> a=[1,0,0,1,0,1,1,1,0,1,0,0]
>>> index_0 = []
>>> index_1 = []
>>> for i,x in enumerate(a):
... if x: index_1.append(i)
... else: index_0.append(i)
...
>>> index_0
[1, 2, 4, 8, 10, 11]
>>> index_1
[0, 3, 5, 6, 7, 9]
возможно дубликат [Как найти все вхождения элемента в списке?] (Http://stackoverflow.com/questions/6294179/how-to-find-all-occurrences-of-an- элемент-в-списке) – simopopov