Python 通过与以前的ITEN比较对列表进行排序

Python 通过与以前的ITEN比较对列表进行排序,python,python-3.x,Python,Python 3.x,我有一个平面上的线段列表,它是一个类,初始顶点和最终顶点有两个实例。在我的代码中,我检测哪些线段与先前插入的直线相交,然后将所有这些线段插入到列表中 segment类还有一个函数,可以根据它与其他段的比较位置返回一个数字。值本身并不重要,只是符号,它告诉我要比较的段是在另一段的左侧还是右侧 我想知道是否可以使用这种比较函数对列表进行排序,因为到目前为止,我只能找到基于返回有意义数字的函数的排序,例如,x小于y,所以x排在第一位 简单地说,我在一个列表中有一些线段,我想用一个函数对它们进行排序,该

我有一个平面上的线段列表,它是一个类,初始顶点和最终顶点有两个实例。在我的代码中,我检测哪些线段与先前插入的直线相交,然后将所有这些线段插入到列表中

segment类还有一个函数,可以根据它与其他段的比较位置返回一个数字。值本身并不重要,只是符号,它告诉我要比较的段是在另一段的左侧还是右侧

我想知道是否可以使用这种比较函数对列表进行排序,因为到目前为止,我只能找到基于返回有意义数字的函数的排序,例如,x小于y,所以x排在第一位


简单地说,我在一个列表中有一些线段,我想用一个函数对它们进行排序,该函数只告诉我某个线段,比如说S1在另一个线段S2的右边或左边,其他什么都没有。

使用带有“键”选项的自定义排序,我想它会有所帮助:或者

如何排序[S1,S2,S3]如果S1不能与S3进行比较,请列出列表?这并不是说它不能进行比较,而是我尝试进行的比较只会查看邻居以给出一个结果。我想这就像是泡泡。例如,作为数字思考,我可以知道一个元素是否大于它的邻居,但不能知道它有多大。s3不是s1的邻居,也就是说,它们不可比较。哦,我想我理解你的意思。因此,如果我想实现这种排序,我必须创建一个新函数,而不是使用list.sort或sorted?如果可以比较任意线段,则定义cmp_line_segment函数return-1(如果小于),0(如果等于),+1(如果大于)并将其传递给functools.cmp_to_key函数,以获得可以传递给已排序内置函数的键函数。