I have code which looks something like this:
thing_index = thing_list.index(thing)
otherfunction(thing_list, thing_index)
ok so that's simplified but you get the idea. Now thing
might not actually be in the list, in which case I want to pass -1 as thing_index
. In other languages this is what you'd expect index()
to return if it couldn't find the element. In fact it throws a ValueError
.
I could do this:
try:
thing_index = thing_list.index(thing)
except ValueError:
thing_index = -1
otherfunction(thing_list, thing_index)
But this feels dirty, plus I don't know if ValueError
could be raised for some other reason. I came up with the following solution based on generator functions, but it seems a little complex:
thing_index = ( [(i for i in xrange(len(thing_list)) if thing_list[i]==thing)] or [-1] )[0]
Is there a cleaner way to achieve the same thing? Let's assume the list isn't sorted.