Je veux un moyen 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 valeur None
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 c'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 ils ont tendance à se répéter au fil du temps) s'il y a des éléments intégrés qui fournissent déjà la même chose.