Python offre plusieurs fonctionnalités pour aider à trouver la valeur la plus proche et son indice dans une liste. Exemples :
Créons une liste de nombres décimaux aléatoires entre 0 et 10 :
import random
l = [round(random.uniform(0,10),2) for i in range(10)]
Ce code générera par exemple :
[6.65, 9.71, 0.86, 6.43, 3.02, 2.25, 6.94, 9.8, 8.96, 9.67]
Objectif : trouver la valeur la plus proche de :
value = 5.5
et son index
Utilisation d'une expression Lambda
Une approche consiste à utiliser une expression Lambda qui offre un moyen simple et puissant de créer des fonctions anonymes :
min(range(len(l)), key=lambda i: abs(l[i]-value))
donne
3
Notez que l[3]
6.43
En utilisant numpy et argmin()
Une autre approche consiste à utiliser la fonction argmin()
de numpy, qui renvoie l'indice de la valeur minimale dans un tableau ou une liste. Par exemple,
np.argmin([ abs(i-value) for i in l])
donne
3
Créez une boucle
Bien que ce ne soit pas la solution la plus idéale, cette approche offre une meilleure compréhension de la logique sous-jacente.
res = []
for idx in range(len(l)):
diff = abs(l[idx]-value)
res.append((diff,idx))
min(res)[1]
donne
3
Références
Liens | Site |
---|---|
argmin() | numpy.org |
lambda | docs.python.org |
random.uniform | docs.python.org |