¿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?