In [1]:
from math import sqrt

def distance_euclidienne(a, b):
    """
    a -- tuple, les composantes sont des nombres
    b -- tuple, même longueur que a, les composantes sont des nombres
    
    renvoie la distance euclidienne entre a et b.
    """
    assert len(a) == len(b), "Attention, a et b doivent être de même longueur."
    somme_des_carrés = sum([(a[i]-b[i])**2 for i in range(len(a))])
    return sqrt(somme_des_carrés)
In [2]:
def distance_Manhattan(a, b):
    """
    a -- tuple, les composantes sont des nombres
    b -- tuple, même longueur que a, les composantes sont des nombres
    
    renvoie la distance Manhattan entre a et b.
    """
    assert len(a) == len(b), "Attention, a et b doivent être de même longueur."
    somme = sum([abs(a[i]-b[i])  for i in range(len(a))])
    return somme
In [3]:
def liste_distances(liste_tuples, a, distance):
    """
    liste_tuples -- liste de tuples, les composantes sont des nombres
    a -- tuple de même longueur et compasantes de même nature que ceux de la liste
    distance -- fonction calculant la distance entre deux tuples
    
    renvoie la liste [distance(a, liste_tuples[0]), distance(a, liste_tuples[1]), ...]
    """
    return [distance(a, element) for element in liste_tuples]
In [4]:
points = [(0,0), (1,2), (5,6), (1,1), (3,4)]
In [5]:
liste_distances(points, (2,2), distance_euclidienne)
Out[5]:
[2.8284271247461903, 1.0, 5.0, 1.4142135623730951, 2.23606797749979]
In [6]:
liste_distances(points, (2,2), distance_Manhattan)
Out[6]:
[4, 1, 7, 2, 3]
In [ ]: