## Question

Asked By – Sean

I am iterating over a list and I want to print out the index of the item if it meets a certain condition. How would I do this?

Example:

```
testlist = [1,2,3,5,3,1,2,1,6]
for item in testlist:
if item == 1:
print position
```

**Now we will see solution for issue: How to get item’s position in a list? **

## Answer

Hmmm. There was an answer with a list comprehension here, but it’s disappeared.

Here:

```
[i for i,x in enumerate(testlist) if x == 1]
```

Example:

```
>>> testlist
[1, 2, 3, 5, 3, 1, 2, 1, 6]
>>> [i for i,x in enumerate(testlist) if x == 1]
[0, 5, 7]
```

Update:

Okay, you want a generator expression, we’ll have a generator expression. Here’s the list comprehension again, in a for loop:

```
>>> for i in [i for i,x in enumerate(testlist) if x == 1]:
... print i
...
0
5
7
```

Now we’ll construct a generator…

```
>>> (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
```

and niftily enough, we can assign that to a variable, and use it from there…

```
>>> gen = (i for i,x in enumerate(testlist) if x == 1)
>>> for i in gen: print i
...
0
5
7
```

And to think I used to write FORTRAN.

This question is answered By – Charlie Martin

**This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 **