以升序对2D列表进行排序

时间:2020-06-15 19:30:19

标签: python list algorithm numpy matplotlib

我创建了随机点,并使用绘图和数据绘制了图形。然后,我将该图另存为图像。

我该怎么做?

  • 将此随机点列表排序,从低坐标到高坐标。

    示例列表:[[1,3], [1,2], [1,1]]

    目标:[[1,1], [1,2], [1,3]]

  • 并以目标列表为例:

    索引0 = [1,1],索引1 = [1,2]等。
    我该如何在这些索引之间进行数学运算,例如:Y0 - Y1/ X0 - X1

这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
import cv2

points = np.random.randint(0, 9, size=(18,2))
print(points)
plt.plot(points[:,0], points[:,1], '.',color='k')


plt.savefig("graphic.png",bbox_inches="tight")
result = cv2.imread("graphic.png")
cv2.imshow("Result",result)

enter image description here

以随机创建的点绘制的图形。我正在尝试将较低的Y排序为较高的Y。例如,在此图形上,您可以看到最小坐标为(1,0)和第二个最小坐标为(7,1)。

2 个答案:

答案 0 :(得分:0)

这是python中称为sorted的此函数。您知道这是一件了不起的事情,我们都喜欢。它基本上可以对您提供的所有列表进行排序。它确实是一个很棒的工具,我在编码时经常使用它。您所要做的只是简单的:

输入

MyList = [13,7,4,4]
sortedList = sorted(MyList))

输出:

[4, 4, 7, 13]

就像您的列表已排序一样。它甚至可以对包含子列表的列表进行排序。只需将变量MyList更改为您自己的列表即可。 现在,如果我们要反转它,那很简单,只需将reverse设置为true

MyList = [13,7,4,4]
sortedList = sorted(MyList,reverse=True)

当然这适用于字符串 还有另一种实现排序功能的方法,如下所示:

MyList = [13,7,4,4]
MyList.sort()

希望这会有所帮助。

答案 1 :(得分:0)

要对 2D 列表进行排序,请使用这样的 lambda:

mylist = [[1,3], [1,2], [1,1], [0,9]]
l1 = sorted(mylist, key = lambda elem: elem[0]) 
l2 = sorted(mylist, key = lambda elem: elem[1])

第一个在子列表中的第一个元素之后排序,第二个在第二个元素之后排序。输出不同,

[[0, 9], [1, 3], [1, 2], [1, 1]]
[[1, 1], [1, 2], [1, 3], [0, 9]]