只需对列表进行排序;默认排序正是您想要的。
比较两个元组时,它们按其内容排序;首先按第一个元素排序,然后如果它们相等,则按第二个元素排序,依此类推。
演示:
>>> L = [(14, 2, 3), (1, 14, 0), (14, 1, 1), (1, 14, 2), (2, 4, 4), (4, 11, 5), (11, -1000, 6)]
>>> sorted(L)
[(1, 14, 0), (1, 14, 2), (2, 4, 4), (4, 11, 5), (11, -1000, 6), (14, 1, 1), (14, 2, 3)]
我把元素
(14, 2, 3)
向前移动,以显示在
(14, 1, 1)
之后仍然是已排序的。
Python的
list.sort()
方法和
sorted()
函数可以使用
key
函数进行排序。如果您需要不同的排序顺序,则可以返回一个值进行排序。例如,如果您想首先按最后一个元素排序,然后是倒数第二个元素等等,您可以使用以下代码:
sorted(L, key=lambda t: t[::-1])
其中 lambda 返回一个反转的元组以进行排序。你传递给 key 的可调用对象会在对输入序列中的每个元素进行排序之前被调用以“增强”列表,就好像你执行了以下操作:
[s[1] for s in sorted((key(s), s) for s in L)]
t[::-1]
使用了一个反转切片。
更多细节请参见Python排序指南。
sorted(L)
给出了[(1, 14, 0), (1, 14, 2), (2, 4, 4), (4, 11, 5), (11, -1000, 6), (14, 1, 1), (14, 2, 3)]
。这是期望的输出吗? - alecxe