У меня есть код, который выглядит примерно так:
thing_index = thing_list.index(thing)
otherfunction(thing_list, thing_index)
хорошо, так что это упрощено, но вы поняли идею. Теперь thing
может и не быть в списке, в этом случае я хочу передать -1 как thing_index
. В других языках это то, что вы ожидаете, если index()
вернется, если не сможет найти элемент. На самом деле это бросает ValueError
.
Я мог бы сделать это:
try:
thing_index = thing_list.index(thing)
except ValueError:
thing_index = -1
otherfunction(thing_list, thing_index)
Но это выглядит грязно, к тому же я не знаю, можно ли поднять ValueError
по какой-то другой причине. Я предложил следующее решение, основанное на функциях генератора, но оно кажется немного сложным:
thing_index = ( [(i for i in xrange(len(thing_list)) if thing_list[i]==thing)] or [-1] )[0]
Есть ли более чистый способ достичь того же? Давайте предположим, что список не отсортирован.