Je veux trouver le tuple à l'intérieur d'une liste la plus proche de mon tuple donné.
J'ai une liste de coordonnées et un point et j'ai besoin de trouver l'élément de la liste la plus proche de mon point. < / p>
quelque chose comme ceci: p> J'ai essayé d'utiliser TypeError: Les indices de liste doivent être des entiers ou des tranches, pas du tuple p>
blockQuote> p> sortie = la distance la plus proche code> p>
SCIPY .spatial.distance.ucuclidien code> Mais cela donne l'erreur: P>
4 Réponses :
Essayez pour C dans la plage (len (cordes)) code>. Comme vous l'êtes, vous prenez des éléments de liste dans
C code>, pas d'index. P>
len (cordons) code> renvoie un entier, ce qui n'est pas démarré (ce code soulève donc une erreur ...)
Vous vous transmettez l'objet C comme un index. Vous pouvez le faire en utilisant énuméré si vous souhaitez utiliser l'index ou simplement le faire la manière pythononique: Vous devez enregistrer les distances et trouver le minimum aussi. p> p>
c code> est le tuple dans la liste des coordonnées, ce n'est pas l'index, alors utilisez-le au lieu de
cordons [C] code>, vous pouvez également utiliser
min code> avec une expression génératrice pour obtenir ce que vous voulez:
99.29753269845128
Pas besoin de générateurs en min si vous utilisez la touche code> code> argument;)
Python min code> permet de spécifier une fonction d'argument unique qui renvoie une valeur (la touche "
code>") et il renvoie l'élément qui le minimise.
min(cords, key=lambda c : distance.euclidean(c, point))
Cela donnera le point avec la distance minimale pour obtenir la distance minimale que vous devrez le calculer à nouveau.
OP: "Je veux trouver le tuple b> à l'intérieur d'une liste la plus proche de mon tuple donné"
Ensuite, j'ai été trompé par sortie = distance la plus proche code> dans la question.
Dans la première itération
C code> est le tuple
(455, 12) code> -. Qu'attendez-vous
cordons [(455, 12)] code> être?