我的代码是这样的:
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]
有没有一种更简洁的方法来实现同样的目标? 让我们假设列表没有排序。