Comment trier une liste de coordonnées x-y
J'ai besoin de trier une liste de [x,y]
coordonnées qui ressemble à ceci:
list = [[1,2],[0,2],[2,1],[1,1],[2,2],[2,0],[0,1],[1,0],[0,0]]
Le modèle que je suis à la recherche d'après le tri est:
[x,y]
coordonner seront triées par y
d'abord et ensuite par x
. La nouvelle liste devrait ressembler à:
list = [[0,0],[1,0],[2,0],[0,1],[1,1],[2,1],[0,2],[1,2],[2,2]]
Je ne peux pas comprendre comment le faire, et apprécierait un peu d'aide.
- Je vais voter pour fermer cette question hors-sujet parce que c'est facile.
- Peut-on re-ouvrir cette question? Le tri des coordonnées est une bonne question à poser, et c'est le top du résultat si l'on googles " comment trier les coordonnées en python.
- Aussi la plus rapide et la plus propre réponse n'est pas ici. Ce qui serait
my_list = np.array(list) ind = np.lexsort((my_list[:,1], mylist[:,0])) sorted = my_list[ind]
Vous devez vous connecter pour publier un commentaire.
utilisation
triés
avec clé:Il sera le premier tri sur la valeur de y, et si c'est égal, alors il sera de tri sur la valeur de x.
Je conseille de ne pas utiliser
list
comme une variable parce que c'est un intégré dans la structure de données.Définir un index virtuel Z = (X+Y) maintenant effectuer le tri rapide sur Z et basé sur l'indice Z choisir les éléments (X, Y). Les Points sur le cercle conduira à Z même (et évidemment colle dans les résultats de tri)
(3,11)
et(11,3)
vous donnerait la mêmeZ
alors qu'en réalité ils sont très différents les points de