我使用发电机来执行列表中搜索喜欢这个简单的例子:如何让Python生成器返回None而不是StopIteration?
>>> a = [1,2,3,4]
>>> (i for i, v in enumerate(a) if v == 4).next()
3
(只是帧的例子了一下,我使用很长的列表相比,上面的一个,并且条目是更复杂一点比int
。我这样做,这样我每次搜索它们)
所以整个列表不会被遍历现在,如果我反而改变,要i == 666
,它会返回一个StopIteration
因为它可以” t在a
找到任何666
条目。
我该如何让它返回None
?我当然可以将它包装在try ... except
条款中,但是有更多的pythonic方法可以做到吗?
我能问你为什么使用发电机来搜索的东西呢? –
如果您搜索已经过去的东西,您会发生什么?为什么不使用更'pythonic'的方式,比如'如果我在a:...'中? –
@Manny D,如果你想得到找到的物品的索引,“如果我在a”中没有帮助。 – senderle