我使用生成器在列表中执行搜索,比如下面这个简单的例子:
>>> a = [1,2,3,4]
>>> (i for i, v in enumerate(a) if v == 4).next()
3
(只是为了给这个例子定义一个框架,与上面的列表相比,我使用了更长的列表,并且这些条目比 int
要复杂一些。我这样做是为了每次搜索时不会遍历整个列表)
现在,如果我将它改为 i == 666
,它将返回一个 StopIteration
,因为它在 a
中找不到任何 666
条目。
我怎样才能让它返回 None
而不是?我当然可以用 try ... except
子句包装它,但是有没有更简洁的方法呢?