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