У меня есть код, который выглядит примерно так:
thing_index = thing_list.index(thing)
otherfunction(thing_list, thing_index)
ok, чтобы упростить, но вы поняли эту идею. Теперь 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]
Есть ли более чистый способ достичь того же? Предположим, что список не отсортирован.