Хммм. Здесь был ответ с пониманием списка, но он исчез.
Здесь:
[i for i,x in enumerate(testlist) if x == 1]
Пример:
>>> testlist
[1, 2, 3, 5, 3, 1, 2, 1, 6]
>>> [i for i,x in enumerate(testlist) if x == 1]
[0, 5, 7]
Обновление:
Хорошо, вам нужно выражение генератора, у нас будет выражение генератора. Вот снова понимание списка в цикле for:
>>> for i in [i for i,x in enumerate(testlist) if x == 1]:
... print i
...
0
5
7
Теперь мы построим генератор ...
>>> (i for i,x in enumerate(testlist) if x == 1)
<generator object at 0x6b508>
>>> for i in (i for i,x in enumerate(testlist) if x == 1):
... print i
...
0
5
7
и достаточно ловко, мы можем присвоить это переменной и использовать ее оттуда ...
>>> gen = (i for i,x in enumerate(testlist) if x == 1)
>>> for i in gen: print i
...
0
5
7
И подумать, что я писал ФОРТРАН.