La fonction list.index(x)
renvoie l'index dans la liste du premier élément dont la valeur est x
.Python: retourne l'index du premier élément d'une liste qui rend une fonction passée true
est-il une fonction, list_func_index()
, similaire à la fonction index()
qui a une fonction, f()
, en tant que paramètre. la fonction, f()
est exécutée sur chaque élément, e
, de la liste jusqu'au f(e)
renvoie True
. puis list_func_index()
renvoie l'index de e
.
codewise:
>>> def list_func_index(lst, func):
for i in range(len(lst)):
if func(lst[i]):
return i
raise ValueError('no element making func True')
>>> l = [8,10,4,5,7]
>>> def is_odd(x): return x % 2 != 0
>>> list_func_index(l,is_odd)
3
est-il une solution plus élégante? (Et un meilleur nom pour la fonction)
+1 ce que j'étais en train de taper :-) – bobince
Wow, une autre victoire pour l'obscurité. Il n'y a rien à gagner à utiliser un code "intelligent" comme celui-ci. –
@JF: en fait c'est presque une transcription alphabétisée de votre solution, seulement avec des accolades au lieu de "def". aussi la valeur de retour est en avant, au lieu de à la fin (un avantage, je dirais). et il y a même la possibilité de prendre plusieurs réponses, ce que votre solution ne peut pas faire. Alors, quelle est exactement la raison pour laquelle vous avez baissé la réponse de votre concurrent? – Paul