Python中最近对的算法:难以按x和y坐标排序

时间:2018-06-12 21:54:13

标签: python python-3.x algorithm sorting mergesort

我正在尝试定义一个函数,它接受一个数组,由带有x和y坐标的点组成,作为输入。我需要2个输出:一个数组的点按x坐标排序,另一个数组的点按y坐标排序。我在python中这样做。谢谢。

2 个答案:

答案 0 :(得分:0)

我将假设您的阵列如下所示:

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])

lambda将分别按第一个和第二个索引对变量进行排序

答案 1 :(得分:0)

或者,您可以使用 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)]