Sorting Tuples Python



我想使用此方法对元组进行排序...

if(a1,b1)<(A2,B2)然后A2> A1或(A1 == A2和B2> B1)。

该算法不应适当,预计它将在[0,99]的范围内接收数字。

Input:
[(9, 7), (78, 24), (17, 74), (53, 81), (40, 43), (79, 82), (84, 46), (68, 53),
(92, 95), (60, 38), (20, 62), (72, 57)]
Output:
[(9, 7), (17, 74), (20, 62), (40, 43), (53, 81), (60, 38), (68, 53), (72, 57),
(78, 24), (79, 82), (84, 46), (92, 95)]

我想到使用计数排序的概念,因为时间复杂性必须为o(n),但是列表对计数的长度为100*100。那不是一个非常有效的方法。

您有任何建议吗?

sorted()内置函数应适合您的情况,它会比较第一个元素,如果两个项目的第一个元素相同,则它会比较第二个元素,等等。

在以下示例中,simple_list[0][0]simple_list[1][0]相等(4和4),因此比较了simple_list[0][1]simple_list[1][1](3和5):

>>> simple_list = [(4, 3), (4, 5), (1, 2)]
>>> sorted(simple_list)
[(1, 2), (4, 3), (4, 5)]

对于您的情况,请尝试以下内容:

tuples_list = [(9, 7), (78, 24), (17, 74), (53, 81), (40, 43), (79, 82), (84, 46), (68, 53), (92, 95), (60, 38), (20, 62), (72, 57)]
sorted_list = sorted(tuples_list)

输出:

>>> sorted(tuples_list)
[(9, 7), (17, 74), (20, 62), (40, 43), (53, 81), (60, 38), (68, 53), (72, 57), (78, 24), (79, 82), (84, 46), (92, 95)]

最新更新