Je veux une manière idiomatique de trouver le premier élément d'une liste qui correspond à un prédicat.
Le code actuel est assez moche:
[x for x in seq if predicate(x)][0]
J'ai pensé à le changer en:
from itertools import dropwhile
dropwhile(lambda x: not predicate(x), seq).next()
Mais il doit y avoir quelque chose de plus élégant ... Et ce serait bien s'il renvoie une None
valeur plutôt que de lever une exception si aucune correspondance n'est trouvée.
Je sais que je pourrais simplement définir une fonction comme:
def get_first(predicate, seq):
for i in seq:
if predicate(i): return i
return None
Mais il est assez insipide de commencer à remplir le code avec des fonctions utilitaires comme celle-ci (et les gens ne remarqueront probablement pas qu'elles sont déjà là, donc elles ont tendance à se répéter au fil du temps) s'il y a des inserts intégrés qui fournissent déjà la même chose.