How do I get a list of indices of non zero elements in a list?

George Profenza picture George Profenza · Nov 6, 2010 · Viewed 60.2k times · Source

I have a list that will always contain only ones and zeroes. I need to get a list of the non-zero indices of the list:

a = [0, 1, 0, 1, 0, 0, 0, 0]
b = []
for i in range(len(a)):
    if a[i] == 1:  b.append(i)
print b

What would be the 'pythonic' way of achieving this ?

Answer

Ignacio Vazquez-Abrams picture Ignacio Vazquez-Abrams · Nov 6, 2010
[i for i, e in enumerate(a) if e != 0]