Eu quero uma maneira idiomática de encontrar o primeiro elemento em uma lista que corresponde a um predicado.
O código atual é bastante feio:
[x for x in seq if predicate(x)][0]
Eu pensei em mudar para:
from itertools import dropwhile
dropwhile(lambda x: not predicate(x), seq).next()
Mas deve haver algo mais elegante ... E seria bom se ele retornasse um None
valor em vez de gerar uma exceção se nenhuma correspondência fosse encontrada.
Eu sei que eu poderia apenas definir uma função como:
def get_first(predicate, seq):
for i in seq:
if predicate(i): return i
return None
Mas é bastante insípido começar a preencher o código com funções utilitárias como esta (e as pessoas provavelmente não perceberão que elas já estão lá, então elas tendem a ser repetidas ao longo do tempo) se houver itens incorporados que já forneçam o mesmo.