Comment trouver la valeur la plus proche et son index dans une liste avec Python ?

Published: 22 septembre 2023

Tags: Python; List;

DMCA.com Protection Status

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