Maison > développement back-end > Tutoriel Python > Comment trouver le nombre dans une liste le plus proche d'une valeur donnée ?

Comment trouver le nombre dans une liste le plus proche d'une valeur donnée ?

DDD
Libérer: 2024-11-09 17:48:02
original
635 Les gens l'ont consulté

How do you find the closest number in a list to a given value?

Trouver le nombre le plus proche dans une liste d'une valeur donnée

Étant donné une liste d'entiers et un nombre cible, la tâche consiste à trouver le nombre dans la liste qui est le plus proche de la cible. Ce problème peut être résolu en utilisant différentes approches :

Utilisation de la distance minimale

Si l'ordre des éléments dans la liste n'est pas garanti, la fonction min() avec le paramètre key peut être utilisée. Cette méthode trouve la distance minimale entre chaque élément et la cible et renvoie l'élément avec la distance minimale :

def takeClosest(myList, myNumber):
    return min(myList, key=lambda x: abs(x - myNumber))
Copier après la connexion

Utilisation de la recherche binaire (méthode de bissection)

Si la liste est connue de être trié, une recherche binaire peut être appliquée pour trouver plus efficacement le nombre le plus proche en un temps O(log n) :

def takeClosest(myList, myNumber):
    low = 0
    high = len(myList) - 1
    while low <= high:
        mid = (low + high) // 2
        if myList[mid] == myNumber:
            return myList[mid]
        elif myList[mid] < myNumber:
            low = mid + 1
        else:
            high = mid - 1
    return min([myList[low], myList[high]], key=lambda x: abs(x - myNumber))
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal