Quero uma maneira idiomática de encontrar o primeiro elemento em uma lista que corresponda a um predicado.
O código atual é bastante feio:
[x for x in seq if predicate(x)][0]
Pensei em mudar para:
de itertools import dropwhile dropwhile(lambda x: not predicate(x), seq).next()
>
Mas deve haver algo mais elegante... E seria bom se retornasse um valor Nenhum
em vez de gerar uma exceção se nenhuma correspondência for encontrada.
Eu sei que poderia definir uma função como:
def get_first(predicate, seq): for i in seq : if predicate(i): return i return None
Mas é muito ruim 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 eles tendem a se repetir ao longo do tempo) se houver built-ins que já fornecem o mesmo.