¿Cómo puedo hacer que un generador de Python devuelva None en lugar de StopIteration?

Estoy usando generadores para realizar búsquedas en listas como este simple ejemplo:

>>> a = [1,2,3,4]
>>> (i for i, v in enumerate(a) if v == 4).next()
3

(Solo para enmarcar un poco el ejemplo, estoy usando listas mucho más largas en comparación con la anterior, y las entradas son un poco más complicadas queint. Lo hago de esta manera para que no se recorran las listas completas cada vez que las busco)

Ahora si en cambio cambiaría eso ai == 666, devolvería unStopIteration porque no puede encontrar ninguna666 entrada ena.

¿Cómo puedo hacer que regreseNone en su lugar? Por supuesto, podría envolverlo en untry ... except cláusula, pero ¿hay alguna manera más pitónica de hacerlo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta