Я использую генераторы для выполнения поиска в списках, как в этом простом примере:
>>> 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
предложение, но есть ли более питонический способ сделать это?