Алгоритм ближайшей пары в Python: сложность сортировки по координатам x и y - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь определить функцию, которая принимает массив, состоящий из точек с координатами x и y, в качестве входных данных.Мне нужно 2 выхода: один массив, в котором точки отсортированы по их координатам x, и другой массив, в котором точки отсортированы по их координате y.Я делаю это на питоне.Благодарю.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

В качестве альтернативы вы можете использовать функцию itemgetter() в качестве параметра key для sorted() функция:

from operator import itemgetter

points = [(7,3), (2,1), (4,5), (9,0)]
sorted_by_x = sorted(points) # you can add the key parameter itemgetter(0) if you want
sorted_by_y = sorted(points, key=itemgetter(1))

print("Points List: {}".format(points))
print("Sorted by X Points List: {}".format(sorted_by_x))
print("Sorted by Y Points List: {}".format(sorted_by_y))

Выход:

Points List: [(7, 3), (2, 1), (4, 5), (9, 0)]
Sorted by X Points List: [(2, 1), (4, 5), (7, 3), (9, 0)]
Sorted by Y Points List: [(9, 0), (2, 1), (7, 3), (4, 5)]
0 голосов
/ 13 июня 2018

Я предполагаю, что ваш массив выглядит следующим образом:

input = [(1,2), (3,4), ..., (x,y)]

Вы можете использовать метод sorted (встроенный) для выполнения сортировки списка:

x_sorted = sorted(input, key=lambda tup: tup[0])
y_sorted = sorted(input, key=lambda tup: tup[1])

Где лямбда будет сортировать вашу переменную по первому и второму индексам соответственно

...