Я использую генераторы для выполнения поиска в списках, подобных этому простому примеру:
>>> a = [1,2,3,4]
>>> (i for i, v in enumerate(a) if v == 4).next()
3
(Просто чтобы немного ограничить пример, я использую гораздо более длинные сравниваемые списки к приведенному выше, и записи немного сложнее, чем int
. Я делаю это так, чтобы все списки не просматривались каждый раз, когда я их ищу)
Теперь, если бы я вместо этого измените его на i == 666
, он вернет StopIteration
, потому что не может найти ни одной записи 666
в a
.
Как я могу заставить его возвращать None
? Конечно, я могу заключить его в предложение try ... except
, но есть ли более питонический способ сделать это?