# How to get item's position in a list?

### Question

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
``````
1
154
8/10/2016 9:23:08 PM

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.

265
9/15/2017 6:11:04 PM

``````print testlist.index(element)
``````

If you are not sure whether the element to look for is actually in the list, you can add a preliminary check, like

``````if element in testlist:
print testlist.index(element)
``````

or

``````print(testlist.index(element) if element in testlist else None)
``````

or the "pythonic way", which I don't like so much because code is less clear, but sometimes is more efficient,

``````try:
print testlist.index(element)
except ValueError:
pass
``````