我使用發電機來執行列表中搜索喜歡這個簡單的例子:如何讓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